我的数据集如下所示:
X
date server cpu
1/1/2012 A 80
1/1/2012 B 20
1/1/2012 C 10
1/2/2012 A 80
1/2/2012 B 20
1/2/2012 C 10
1/3/2012 A 80
1/3/2012 B 20
1/3/2012 C 10
1/4/2012 A 80
1/4/2012 B 20
1/4/2012 C 10
1/5/2012 A 80
1/5/2012 B 20
1/5/2012 C 10
1/6/2012 A 80
1/6/2012 B 20
1/6/2012 C 10
我喜欢使用 ggplot facet_wrap 为每个服务器创建一个单独的图表(除非有更好的方法来做到这一点?)
我的代码是这样的:
ggplot(x, aes(date, cpu, group=server, colour=server))
+ geom_point()
+ facet_wrap(~server)
+ ylim(0,100)
+ theme_bw()
+ geom_smooth(method="lm", se=TRUE, size=1)
+ xlab("Date")
+ ylab("CPU")
+ opts(title="% CPU"),plot.title=theme_text(size=14, colour="navyblue"),axis.title.x = theme_text(face="bold", size=12, colour="#990000"), axis.text.x = theme_text(angle=90, size=9, face="bold"),axis.title.y = theme_text(face="bold", size=12, colour="#990000", angle=90), axis.text.y=theme_text(size=9, face="bold", hjust=1)) + opts(legend.position = "none")
+ opts(strip.text.x = theme_text(size=10, face="bold", colour="navyblue"), strip.background = theme_rect(colour="blue", fill="#98CAFF"))
这有点工作,但我有两个问题:
- 如果主机的数量不是均匀对齐的,这意味着有时,由于主机的数量可能是奇数,最后一行的网格可能比前几行少。因此,最后一行网格图有日期,但最后一行之前的行没有日期。如何确保最后一行之前的行有日期?
- 由于我将为此编写脚本,因此某些数据帧可能具有更多数量的服务器。根据服务器的数量,我需要调整 png 大小。例如,如果服务器的数量是 20,我需要图像的高度为 500,宽度为 200。有没有办法在 ggplot2 中做到这一点?你可能有这个想法。除了ggplot2,还有其他方法吗?