2016-11-01 9 views
0

私の質問はthis one の拡張ですが、私はggplotで2つのstat_summary呼び出しを使用しています。最初のstat_summaryは各ユニットの平均を示し、2番目のstat_summaryは複数ユニットのグループ(時間)の全体平均を示します(添付プロット参照)。 最初のstat_summaryの色の割り当ては、color = factor(unit)を使用してscale_colour_manual()を指定しても問題ありません。 2番目のstat_summaryに2つのレベル(プレとpst)で色を割り当てたいと思います。 color = time、しかし私は再びscale_colour_manualを使って色を指定することはできません。 私は試しました: color = c( "red"、 "blue")、 color = cbPalette2、 aes(color = paste( "平均"、時間))(関連する質問で示唆されているように)運。どんな助けでも大歓迎です。2つの異なるggplot stat_summary関数の色を変更してください

データ:

structure(list(time = c("pre", "pre", "pre", "pre", "pre", "pre","pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pre", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst", "pst"), unit = c(73, 72, 72, 73, 73, 75, 75, 75, 72, 72, 73,73, 75, 75, 72, 74, 71, 74, 74, 71, 71, 74, 74, 71, 72, 73, 72, 72, 73, 73, 72, 73, 72, 75, 75, 75, 75, 75, 71, 71, 71, 74, 74, 71, 74, 71, 70, 66, 68, 66, 68,70, 70, 66, 70, 68, 66, 68, 70, 67, 69, 69, 69, 67, 69, 67, 69, 66, 66, 66, 68, 68, 66, 68, 66, 68, 70, 70, 70, 70, 70, 67, 67, 69, 67, 69, 69, 67, 69, 67, 69, 76, 76, 76, 78, 78, 78, 76, 78, 78, 76, 77, 77, 77, 79, 79, 79, 77, 77, 79, 79, 78, 78, 78, 78, 76, 76, 76, 76, 76, 77, 79, 79, 77, 77, 79, 79, 77, 79), number = c(159, 152, 151, 157, 156, 169, 167, 166, 153, 155, 158, 160, 168, 170, 154, 164, 146, 162, 161, 150, 147, 165, 163, 149, 231, 236, 235, 233, 240, 238, 232, 237, 234, 246, 247, 248, 249, 250, 226, 230, 228, 245, 243, 227, 242, 229, 141, 123, 133, 122, 132, 143, 145, 121, 142, 131, 124, 134, 144, 130, 138, 140, 137, 126, 136, 129, 139, 201, 205, 203, 215, 213, 202, 212, 204, 214, 221, 222, 223, 224, 225, 206, 210, 216, 208, 220, 218, 207, 217, 209, 219, 174, 172, 171, 182, 184, 181, 173, 185, 183, 175, 177, 179, 176, 189, 186, 187, 180, 178, 190, 188, 262, 261, 265, 263, 251, 252, 253, 254, 255, 257, 269, 267, 256, 260, 266, 270, 258, 268), rep = c("A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C"), tied = c("C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "V", "V", "V", "V", "V", "V", "V", "V", "V", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "V", "V", "V", "V", "V", "V", "V", "V", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "V", "V", "V", "V", "V", "V", "V", "V", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "V", "V", "V", "V", "V", "V", "V", "V", "V", "V", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "V", "V", "V", "V", "V", "V", "V", "V", "V", "V", "C", "C", "C", "C", "C", "C", "C", "C", "C", "V", "V", "V", "V", "V", "V", "V", "V", "V"), measure = c(0.65, 0.32, 0.29, 0.53, 1.18, 0.62, 0.2, 0.38, 0.64, 0.29,0.45, 0.66, 0.18, 0.74, 0.36, 0.97, 0.27, 0.2, 0.5, 0.34, 0.19, 0.73, 0.58, 0.29, 0.47, 0.17, 0.75, 0.47, 0.37, 0.44, 0.79, 0.37, 0.51, 0.19, 0.28, 0.21, 0.18, 0.2, 0.01, 0.69, 0.66, 0.32, -0.05, 0.69, -0.0899999999999999, 0.52, 0.2, 0.17, 0.21, 0.2, 0.17, 0.31, 0.41, 0.38, 0.21, 0.47, 0.37, 0.29, 0.52, 0.26, 0.47, 0.27, 0.35, 1.14, 1.23, 0.81, 0.56, 0.64, 0.35, 0.43, 0.51, 0.44, 0.84, 0.59, 0.14, 0.55, 0.16, 0.13, 0.16, 0.15, 0.17, 0.31, 0.6, 0.22, 0.57, 0.65, 0.51, 0.77, 0.56, 0.51, 0.52, 0.2, 0.18, 0.03, 0.12, 0.37, 0.14, 0.1, 0.31, 0.16, 0.39, 0.2, 0.27, 0.17, 0.27, 0.14, 0.13, 0.28, 0.5, 0.23, 0.17, 0.05, 0.67, 0.4, 0.24, 0.18, 0.33, 0.22, 0.12, 0.15, 0.0700000000000001, 0, 0.02, 0.39, 0.41, 0.88, 0.28, -0.0600000000000001, -0.01)), .Names = c("time", "unit", "number", "rep", "tied", "measure"), row.names = c(NA,-129L), class = "data.frame") 

コード:

cbPalette2 <- c("ghostwhite", "lightsteelblue1", "lightyellow") 
unitcolours1<-c("purple","gold", "#999999","#009E73","plum1","#E69F00","#56B4E9","black","lightgreen","red","#0072B2","darkolivegreen3","#CC79A7","deeppink4") 


v<-ggplot(stack, aes(x=tied, y=measure, fill=time)) + 

geom_point(size=0.5, aes(fill=factor(time), colour=factor(unit)), position=position_jitterdodge(jitter.width = NULL, jitter.height = 0, dodge.width = 0.75))+ 

    stat_summary(mapping=aes(shape=95, fill=time, colour=factor(unit)), fun.y= "mean", geom="point", size=6, position=position_dodge(width=0.75))+ 

    stat_summary(mapping=aes(shape=95, fill=time) , fun.y= "mean", geom="point", size=16, position=position_dodge(width=0.75))+ 

facet_grid(.~rep)+ 
labs(fill="time", x="tied", y="measure (cP)")+ 
scale_fill_manual(values=cbPalette2) + 
scale_colour_manual(values=unitcolours1)+ 
guides(colour=FALSE)+ 
scale_shape_identity() + 
theme_bw()+ 
scale_y_continuous(limits=c(-0.1,1.24), breaks=seq(0, 1.2, 0.1)) 
+0

私はあなたが何をしようとしてについて少し困惑しています。あなたは 'ggplot'へのメインコールで' fill = time'を持っていますが、すべてのgeom(geom_point)は塗りつぶしにはなりません。次に、 'stat_summary'の中で' fill = time'を繰り返し、 'geom_point'の中に' fill = factor(time) 'を入れます。あなたがggplotへの主な呼び出しを記入していて、マーカーシェイプが塗りつぶしの美しさをとらえていない場合は、これらは不要です。また、 'aes'の中に' shape = 95'があります。シェイプをデータのカラムにマッピングしない限り、 'shape = 95'は' aes'の外側にあるはずです。 – eipi10

答えて

0

私は私のコメントで述べたように、私はあなたがプロットが見てみたいかどうかはわかりませんが、あなたがして、別の色のマッピングを得ることができます1つのジオメトに対しては塗りつぶされたマーカー(図形21〜25など)を使用し、別のものには塗りつぶされていないマーカーを使用します。次に、塗りつぶされたマーカーの塗りつぶしの美しさに変数をマップし、塗りつぶされていないマーカーの色の美しさに別の変数をマップすることができます。

ここでは、コードの修正版を使用した例を示します。これはおそらくあなたが念頭に置いていたものではありませんので、実際に何をしようとしているのかを教えてください。必要に応じて修正します。

pd = position_dodge(0.75) 

ggplot(stack, aes(x=tied, y=measure)) + 
    geom_point(size=1, aes(fill=time), shape=21, colour=NA, 
      position=position_jitterdodge(jitter.width=NULL, jitter.height=0, dodge.width=0.75)) + 
    stat_summary(shape=95, fun.y=mean, geom="point", size=12, position=pd) + 
    stat_summary(shape=95, aes(colour=factor(unit)), fun.y=mean, geom="point", size=8, position=pd) + 
    facet_grid(.~rep) + 
    labs(fill="Time", x="tied", y="measure (cP)") + 
    # scale_fill_manual(values=cbPalette2) + 
    # scale_colour_manual(values=unitcolours1) + 
    guides(colour=FALSE) + 
    #scale_shape_identity() + 
    theme_bw() + 
    scale_y_continuous(limits=c(-0.1,1.24), breaks=seq(0, 1.2, 0.1)) 

enter image description here

+0

こんにちは、あなたの努力に感謝します。私は写真をアップロードしようとしている私は何を意味するかをより明確に説明しますが、それは何らかの理由で動作していない。私が作ろうとしているグラフはもちろん、あなたが作ったものとよく似ていますが、6本の黒い線(私が色付けしようとしている線)はありません。 pst)、各時間(pre、pst)内にも色のついた線が2つあるはずです;これはfill = factor(時間)が来るところです。それぞれのgeomに、 – Rebecca

+0

'color = time'を使うと' time'の2つのレベルに異なる色を与えますが、 'factor(time)'は 'time'とまったく同じことをします。 '' fill'にどのような列を使いたいのですか? – eipi10

+0

こんにちは、ドットは単位(私はscale_colour_manualで行うことができます、元のコードを参照してください)に応じて色を付ける必要があり、行は時間に従って着色する必要があります。塗りつぶしは現在、ドットを時間的に分離するために使用されていますが、それに応じて黒の線を色づけしたくないようです。塗りつぶしの代わりにグループを使うこともできますが、ドットを正しく塗りつぶしますが、時間に応じて適切に区切りません。 – Rebecca

関連する問題