0

私のデータセットは次のようになります:

バツ

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"))

これはちょっとうまくいきますが、2つの質問があります。

  1. ホストの数が均等に配置されていない場合、つまり、ホストの数が奇数である可能性があるため、最後の行のグリッドが前の行よりも少ない場合があります。したがって、最後の行のグリッド グラフには日付がありますが、最後の行の前の行には日付がありません。最後の行の直前の行に日付があることを確認するにはどうすればよいですか?
  2. これをスクリプト化するため、一部のデータ フレームにはより多くのサーバーが含まれる場合があります。サーバーの数に応じて、png サイズを調整する必要があります。たとえば、サーバーの数が 20 の場合、画像の高さを 500、幅を 200 にする必要があります。ggplot2 でこれを行う方法はありますか? あなたはおそらくその考えを持っています。ggplot2 以外に、これを行う方法はありますか?
4

1 に答える 1

0

質問2に関してはggsave、最後に作成されたプロットを保存するために使用できます。これは、サーバーの数に基づいてプロット幅を決定する擬似コードです。

ggplot(...) + 
   etc()
if(noServers > 20) plot_width = 500
ggsave("name.png", width = plot_width)
于 2012-09-26T18:03:11.043 に答える