3

私がスタックで尋ねた最初の質問で、私はRにかなり慣れていないので、エチケット違反はご容赦ください。ggplot2を使用して2つの積み上げ面グラフをプロットしています。データは、Oracleデータベースからの待機イベントです。これはパフォーマンス調整チャートです。いくつか質問があります。

ここに画像の説明を入力してください

  1. 以下の2つのプロットは、おそらく凡例のテキストの幅が原因で、正しく整列していません。これに対する簡単な解決策はありますか?
  2. 2つのプロットは実際に相関しており、上のプロットは「CPU」や「ユーザーI / O」などの待機クラスを示し、下のプロットはこれらのクラスの特定の待機イベントの詳細を示しています。下の色は、上と同じ待機クラスに基づいて、特定のイベントごとにその色の色合いを変えてほしいと思います。コンセプトが気に入らない場合は、他のオプションも利用できます。伝えるべき情報はたくさんあります。配色に合わせてイベントの数を12に制限しましたが、機能する場合はさらに多くのイベントがあります。
  3. Xにもっと細かい時刻を表示するか、営業時間外(午後6時から午前8時)を灰色にして、時刻の感覚をよりよく伝えたいと思います。
  4. 人々が一般的に使用する12色以上の配色はありますか?醸造所を通して見た、これは最大です。好奇心旺盛な自分で作成できることはわかっています。

これが私のコードです:

library(ggplot2)
library(RColorBrewer)
library(gridExtra)

DF_AAS <- read.csv('http://dl.dropbox.com/u/4131944/Permanent/R-Questions/AAS-Plot/DATA_FRAME_AAS.csv', head=TRUE,sep=",",stringsAsFactors=TRUE)
DF_AAS <- within(DF_AAS, snap_time <- as.POSIXlt(snap_times2,
                                          format = "%Y-%m-%d %H:%M:%S"))
DF_AAS[c('snap_times2')] <- NULL

DF_AAS_EVENT <- read.csv('http://dl.dropbox.com/u/4131944/Permanent/R-Questions/AAS-Plot/DF_AAS_EVENT.csv', head=TRUE,sep=",",stringsAsFactors=TRUE)
DF_AAS_EVENT <- within(DF_AAS_EVENT, snap_time <- as.POSIXlt(snap_times2,
                                                 format = "%Y-%m-%d %H:%M:%S"))
DF_AAS_EVENT[c('snap_times2')] <- NULL

plot_aas_wait_class <- ggplot()+
  geom_area(data=DF_AAS, aes(x = snap_time, y = aas,
                                    fill = wait_class),stat = "identity", position = "stack",alpha=.9)+
                                      scale_fill_brewer(palette="Paired",breaks = sort(levels(DF_AAS$wait_class)))+
                                      scale_y_continuous(breaks = seq(0, max(DF_AAS$aas)+(max(DF_AAS$aas)*.2), 5))+
                                      opts(panel.background = theme_rect(colour = "#aaaaaa"))


plot_aas_event <- ggplot()+
  geom_area(data=DF_AAS_EVENT, aes(x = snap_time, y = aas,
                                   fill = wait_class_event),stat = "identity", position = "stack")+
                                     scale_fill_brewer(palette="Paired",breaks = DF_AAS_EVENT$wait_class_event)+
                                     scale_y_continuous(breaks = seq(0, max(DF_AAS_EVENT$aas)+(max(DF_AAS_EVENT$aas)*.2), 5))+
                                     opts( panel.background = theme_rect(colour = "#aaaaaa"))

grid.arrange(arrangeGrob(plot_aas_wait_class, plot_aas_event),heights=c(1/2,1/2),ncol=1)
4

1 に答える 1

1

おそらく、配置の問題に対する最も簡単な解決策は、凡例を移動することです。

library(scales)
plot_aas_wait_class <- ggplot()+
  geom_area(data=DF_AAS, aes(x = snap_time, y = aas,fill = wait_class),stat = "identity", position = "stack",alpha=.9)+
  scale_fill_brewer(palette="Paired",breaks = sort(levels(DF_AAS$wait_class)))+
  scale_y_continuous(breaks = seq(0, max(DF_AAS$aas)+(max(DF_AAS$aas)*.2), 5))+
  opts(panel.background = theme_rect(colour = "#aaaaaa")) +  
  opts(legend.position = "bottom",legend.direction = "horizontal") + 
  guides(fill = guide_legend(nrow = 2))

plot_aas_event <- ggplot()+
  geom_area(data=DF_AAS_EVENT, aes(x = snap_time, y = aas,fill = wait_class_event),stat = "identity", position = "stack")+
  scale_fill_brewer(palette="Paired",breaks = DF_AAS_EVENT$wait_class_event)+
  scale_y_continuous(breaks = seq(0, max(DF_AAS_EVENT$aas)+(max(DF_AAS_EVENT$aas)*.2), 5))+
  opts( panel.background = theme_rect(colour = "#aaaaaa")) +  
  opts(legend.position = "bottom",legend.direction = "horizontal") + 
  guides(fill = guide_legend(ncol = 2))


grid.arrange(arrangeGrob(plot_aas_wait_class, plot_aas_event),heights=c(1/2,1/2),ncol=1)

x 軸の解像度を上げるには、次のようなものを使用します。

+ scale_x_datetime(breaks = date_breaks("2 hours"))

またはあなたが好むものは何でも壊れます。

特定の領域のシェーディングは、通常geom_rect、設定alpha = 0.25または何かで行われます。これには、長方形の始点と終点 ( y 座標にInfとを使用) を含む別のデータ フレームを作成して に渡す必要があります。-Infgeom_rect

于 2012-05-11T16:38:50.607 に答える