6

私は ggplot に比較的慣れていないので、ここに含まれるデータとコードを使用して以下の図を作成しました…</p>

データはこちら

Data <- structure(list(IndID = structure(1:17, .Label = c("AA", "BB", 
"CC", "DD", "EE", "FF", "GG", "HH", "II", "JJ", "KK", "LL", "MM", 
"NN", "OO", "PP", "QQ"), class = "factor"), Avg = c(7.95, 10.483, 
5.951, 7.359, 10.465, 10.745, 14.402, 81.417, 67.087, 4.254, 
34.393, 47.324, 60.713, 75.446, 64.527, 28.779, 54.764), AvgSE = c(1.685, 
2.949, 1.097, 2.607, 4.256, 3.539, 1.702, 3.314, 0.714, 0.302, 
1.154, 1.827, 0.573, 1.292, 1.955, 1.341, 1.949), OBS = c(7.667, 
10, 8, 7.5, 14, 10.333, 12, 91, 53, 7, 29, 36.5, 43, 61, 61, 
24, 38)), .Names = c("IndID", "Avg", "AvgSE", "OBS"), class = "data.frame", row.names = c(NA, 
-17L))

そして、このように見えます

> head(Data)
  IndID    Avg AvgSE    OBS
1    AA  7.950 1.685  7.667
2    BB 10.483 2.949 10.000
3    CC  5.951 1.097  8.000
4    DD  7.359 2.607  7.500
5    EE 10.465 4.256 14.000
6    FF 10.745 3.539 10.333

プロットの私のコードはここにあります

ggplot(Data, aes(x=IndID, y=Avg))+
    geom_point()+
    geom_errorbar(aes(ymin=Avg-AvgSE, ymax=Avg+AvgSE))+
    geom_point(aes(y=OBS),color="red", pch = 8) +
    theme(axis.text.x=element_text(angle=30, hjust=1))

ここに画像の説明を入力

2 つの異なる点セットをプロットしました。aes()引数にcolorまたはとして指定する要素がありませんshape。私が見たほとんどの SO 投稿では、これらの引数を使用してから、デフォルトで凡例が表示されます。私が知る限り (多くの投稿を見て R Graphics Cookbook を使用した後)、ベース R 関数のような凡例を作成するのはそれほど簡単ではありません。

ここで提案されているように、データ構造を変更するための最良のオプションはありますかhttp://stackoverflow.com/questions/17713919/r-ggplot-2-geom-points-how-to-add-a-legend usingmelt ()?

または、凡例を作成する別の方法はありますか?

上の図では、ポイントの各セットの凡例が必要なだけです。1 つは黒 (平均) ポイント用で、もう 1 つは OBS ポイント用です。

任意の提案をいただければ幸いです!

4

1 に答える 1

5

データを作り直した方が本当に良いと思いますが、これを行う1つの方法があります。aes()凡例を作成するには、色をマッピングする必要があります。これをテキスト文字列にマップできます。

p <- ggplot(Data, aes(x=IndID, y=Avg))+
  geom_point(aes(color = "Avg"))+
  geom_errorbar(aes(ymin=Avg-AvgSE, ymax=Avg+AvgSE))+
  geom_point(aes(y=OBS, color = "OBS"), pch = 8, show_guide = T) +
  theme(axis.text.x=element_text(angle=30, hjust=1))

ここに画像の説明を入力

希望どおりの色を取得するには、 を使用しますscale_colour_manual()。次に、 を使用して凡例の形状をオーバーライドできますguides()

p + scale_colour_manual(values = c("black", "red")) + 
  guides(colour = guide_legend(override.aes = list(shape = c(16, 8))))

ここに画像の説明を入力

于 2013-11-13T05:24:57.507 に答える