2013-08-05 12 views
22

gogplotに4つの行があり、別々のgeom_line()引数で追加したプロットがあります。私は伝説を追加したいが、scale_colour_manualはこの場合には機能しない。変数を個別に追加したときに凡例を追加する適切な方法は何ですか?手動で行が追加されたときにggplotに凡例を追加

ここに私のコードです:

ggplot(proba[108:140,], aes(c,four)) + 
    geom_line(linetype=1, size=0.3) + 
    scale_x_continuous(breaks=seq(110,140,5)) + 
    theme_bw() + 
    theme(axis.line = element_line(colour = "black", size=0.25), 
      panel.grid.major = element_blank(), 
      panel.grid.minor = element_blank(), 
      panel.border = element_blank(), 
      panel.background = element_blank()) + 
    theme(axis.text.x = element_text(angle = 0, hjust = +0.5, size=6,color="black")) + 
    theme(axis.text.y = element_text(angle = 0, hjust = -100, size=6, color="black")) + 
    theme(axis.ticks=element_line(colour="black",size=0.25)) + 
    xlab("\nTime-steps") + 
    ylab("Proportion correct\n") + 
    theme(axis.text=element_text(size=8),axis.title=element_text(size=8)) + 
    geom_line(aes(c,three), size=0.2, linetype=2) + 
    geom_line(aes(c,one),linetype=3, size=0.8, colour="darkgrey") + 
    geom_line(aes(c,two), linetype=1, size=0.8, colour="darkgrey") 
+0

コードを掲載することはできますか? 'aes'の呼び出しで' color = "Line Name"を設定するとうまくいくはずです。 – Peyton

+0

私はすでに色で引数を持っていますが、それを凡例として表示しません。私は自分のコードを掲載しました。 – user1723765

+3

'aes'の中に' color'引数を入れ、それを色名に設定するのではなく、凡例に表示したい名前に設定します。次に、 'scale_color_manual'を使ってその名前を目的の色にマッピングします。 – Peyton

答えて

21

だけであるべき伝説にどんなラインの名前にaesに色の名前を設定します。

私はあなたのデータを持っているが、ここではランダムなyの値を持つ行をirisを使用した例ですません。

library(ggplot2) 

line.data <- data.frame(x=seq(0, 10, length.out=10), y=runif(10, 0, 10)) 

qplot(Sepal.Length, Petal.Length, color=Species, data=iris) + 
    geom_line(aes(x, y, color="My Line"), data=line.data) 

enter image description here

注意すべき重要なことは、あなたが美学を作成しているということですマッピングではなく、データフレーム内の列に色をマッピングする代わりに、指定した文字列にマッピングします。 ggplotは、データフレームからの値と同様に、その値に色を割り当てます。あなたは、データフレームにSpecies列を追加することにより、上記と同様のプロットを生成することができた:

line.data$Species <- "My Line" 
qplot(Sepal.Length, Petal.Length, color=Species, data=iris) + 
    geom_line(aes(x, y), data=line.data) 

いずれかの方法を、あなたはggplot2割り当てに色が好きではない場合、あなたはscale_color_manualを使用して独自に指定することができます。

qplot(Sepal.Length, Petal.Length, color=Species, data=iris) + 
    geom_line(aes(x, y, color="My Line"), data=line.data) + 
    scale_color_manual(values=c("setosa"="blue4", "versicolor"="red4", 
           "virginica"="purple4", "My Line"="gray")) 

enter image description here

別の方法としては、単に直接行にラベルを付けるために、または文脈からラインの目的は明らかにすることです。実際、最良の選択肢は、あなたの特定の状況によって異なります。

+2

これは、上記のコードの最初のaes()引数にある最初の変数に対して機能しますが、geom_line()を追加する場合には – user1723765

+0

これは機能しませんか?コードとデータの両方 - 基本的に私はあなたがどこにいるのか見るために走ることができる例ですか? – Peyton

関連する問題