我有一个数据框,服务器对许多不同的应用程序使用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)
}
我有两个问题:
我真的很感激任何见解。
答案 0 :(得分:5)
看起来你需要改变一些事情:
for
循环应以for(a in app){
subset(data, App %in% a)
ggplot
需要包含在print
---
title: "Untitled"
output: word_document
---
```{r}
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"
data <- read.table(text = data, header = TRUE)
```
## Start the Plots
```{r qplot,fig.width=8, fig.height=5, message=FALSE, results = 'asis'}
library(ggplot2)
app<-unique(data$App, drop=TRUE)
app<-droplevels(app)
for (a in app){
print(ggplot(subset(data, App %in% a),
aes(Date, Cpu, group=Server, colour=Server)) +
geom_line() +
facet_wrap(~Server))
cat("\n\n## New Plot\n\n")
}
```