2012-05-11 10 views
3

最初の質問私はスタックで質問しましたが、私はRにはかなり新しくなっていますので、あらゆる礼儀の犯行を許してください。私はggplot2を使って2つの積み重なったエリアチャートをプロットしています。データは、Oracleデータベースからの待機イベントです。パフォーマンスチューニングチャートです。私はいくつかの質問があります。R - ggplot2、いくつかの質問、複数の関連するプロット

enter image description here

  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) 
+1

私の唯一の礼儀のコメントは、(1)一般的に、人々は質問ごとに1つの質問に自分自身を制限するように頼みます。そして、(2)あなたは_再現可能なデータとコードを提供するようにお願いします。そうすることで、私たちは答えを書くとき、あなたが望むように動作することを確信できます。さもなければ、私たちはただ推測しており、人々はもっと多くの仕事をするように求めています。 – joran

+1

(4)については、パレットの色が12色に限定されている理由は、moreを使用することは悪い習慣と考えられるからです。人間の目は単にその多くを区別することができず、さらに12人がそれを押している。もちろん、自分で作成して、何でもしても構いません。 – joran

+0

@ joran私は再現可能なデータを提供しました。 read.csvはパブリックURLを参照します。それが問題なら、教えてください。私は複数の質問がおそらく悪い形であると考えましたが、私はRのことがかなり新しいので、他の回答に影響を与えるかどうかはわかりませんでした。私は "私が知らないことを知らない" Rの学習の段階にいる。色の数についてあなたと同意する。私は他の視覚化にもオープンしていますが、良い選択肢が出てこないだけです。 –

答えて

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-Infを使用)を別のデータフレームとして作成し、geom_rectに渡す必要があります。

関連する問題