2016-04-23 17 views
2

答えはとてもシンプルですが、現時点では私はそれを避けています。私はstat_summary()を使って折れ線グラフを作っていきたいと思います。別の時点を表す各x軸ティックで、各グループ(実験条件を表す)ごとに異なる形をしています。ここでstat_summaryを使った折れ線グラフ

は、データが

set.seed(124) 
ID <- rep(1:12, times = 3) 
Group <- rep(c("A", "B", "C"), times = 12) 
score <- rnorm(36, 25, 3) 
session <- rep(c("s1","s2", "s3"), each = 12) 

df <- data.frame(ID, Group, session, score) 

今私は、各時点のための手段のテーブルを作ることによってそこに着くことができます。そのようです。

gMeans <- aggregate(score ~ session + Group, data = df, mean) 

そしてそれをグラフ化します。

pMeans <- ggplot(data = gMeans, aes(x = session, y = score, group = Group, shape = Group)) + 
    geom_line(aes(linetype = Group), size = 1) + 
    geom_point(size = 5, fill = "white") + 
    scale_color_hue(name = "Group", l = 30) + 
    scale_shape_manual(name = "Group", values = c(23,22, 21)) + 
    scale_linetype_discrete(name = "Group") + 
    theme_bw() 

pMeans 

しかし、私はstat_summary()を使用することによって手段のテーブルを作成することのステップをスキップできるようにしたいと思います。私は、さまざまな線種で同様のグラフを得ることができますが、私はどのように各グループの各軸の目盛りに異なる図形を取得することができません。私はgeom_point()geom_line()の多くの異なる順列を以下のようにしようとしましたが、役に立たなかった。上記のコードから得られた出力のような出力を得るには、以下のコードをどのように変更しますか?

pline <- ggplot(df, aes(x=session, y=score, group = Group, shape = Group)) + 
       stat_summary(fun.y="mean", geom="line", size=1.1, aes(linetype=Group, shape = Group)) + 
       scale_shape_manual(values=c(1:3)) 

pline 
+1

簡単な方法は、あなたの_pointと_line呼び出しに機能を追加することです:+ 'ggplot(データ= dfを、AES(X =セッション、Y =スコア、グループ=グループ、形状=グループ)) geom_line(aes(linetype = Group)、size = 1、stat = "summary"、fun.y = mean)+ geom_point(size = 5、fill = "white"、stat = "summary"、fun.y = mean) ' – user20650

+0

tip @ user20650ありがとうございます。これは役に立ちました。シェイプを追加しましたが、 'geom_point'レイヤーの' fill = white'呼び出しにもかかわらず、シェイプは黒い塗りつぶしで出てきました。なぜこれが起こっているのでしょうか? – llewmills

+0

あなたの例のように、scale_shapeを追加する必要があります( 'scale_shape_manual(name =" Group "、values = c(23,22,21))) – user20650

答えて

2

これが役立つとも伝説をクリーンアップする必要があります

library(ggplot2) 

set.seed(124) 
ID <- rep(1:12, times = 3) 
Group <- rep(c("A", "B", "C"), times = 12) 
score <- rnorm(36, 25, 3) 
session <- rep(c("s1","s2", "s3"), each = 12) 

df <- data.frame(ID, Group, session, score) 

gg <- ggplot(df, aes(x=session, y=score, group = Group, shape = Group)) 
gg <- gg + stat_summary(fun.y="mean", geom="line", size=1.1, 
         aes(linetype = Group), show.legend=FALSE) 
gg <- gg + stat_summary(fun.y="mean", geom="point", size=5, 
         aes(shape = Group), fill="white") 
gg <- gg + scale_shape_manual(name = "Group", values = c(23, 22, 21)) 
gg <- gg + theme_bw() 
gg <- gg + theme(legend.key=element_blank()) 
gg 

それは伝説でそれらを保つために意味をなさないのでラインが、隠されました。ラインにstat_summary()を使用していたので(geom_line()に埋め込み、stat="summary"が含まれているので、ポイントgeomのイディオムをIMOと同じに保つのが最善です)。

enter image description here

関連する問題