【发布时间】:2015-10-26 13:43:50
【问题描述】:
我有一个数据框,该数据框具有服务器对许多不同应用程序的 cpu 使用率。像这样的:
data
App Server Date Cpu
Web web01 1/1/2015 10
Web web01 1/2/2015 10
Web web01 1/3/2015 20
Web web01 1/4/2015 30
Web web01 1/5/2015 4
TomCat tom01 1/1/2015 10
TomCat tom01 1/2/2015 10
TomCat tom01 1/3/2015 20
TomCat tom01 1/4/2015 30
TomCat tom01 1/5/2015 4
我需要能够使用带有部分的 knitr 创建 ggplot 图表。例如,第一个部分是 Web,接下来是 TomCat 等等。由于有数百个应用程序,我需要能够循环执行此操作。
我正在尝试这个,但我没有在 word 文档中看到图表:
{r qplot,fig.width=8, fig.height=5, message=FALSE}
library(ggplot2)
app<-unique(data$App, drop=TRUE)
app<-droplevels(app)
for (app in data){
ggplot(subset(data, App %in% data), aes(Date, Cpu, group=Server, colour=server))+geom_line() + facet_wrap(~Server)
}
我有两个问题:
- 如何像 sweave 一样在 knitr 中自动创建部分?
- 如何在 for 循环中创建 ggplot 图表?
如果有任何见解,我将不胜感激。
【问题讨论】:
-
为什么不把 App 和 Server 放在一起呢?另一种选择是构建一个 ggplot 对象列表并绘制它们,但是您希望它们与不同的 grid.arrange 调用分组。
-
@hrbrmstr,为了便于阅读,我需要每个应用程序位于不同的部分,否则,所有内容都将在一个图表中。
-
拥有数百个应用程序,我认为
app的一个方面会使情节跑出页面。尝试将results='asis'添加到您的块选项中,然后将cat("## section break")放在ggplot调用之后。您可以将分节符替换为app的值,或其他一些巧妙的命名方案。 -
@Benjamin,我在运行 Knit Word 后看不到 word 文档中的情节。有什么想法吗?