24

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

これが私のコードです:

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")
4

1 に答える 1

25

aes凡例の線の名前が何であれ、色の名前を設定するだけです。

あなたのデータはありませんが、irisランダムな y 値を持つ線を使用した例を次に示します。

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)

ここに画像の説明を入力

注意すべき重要なことは、美的なマッピングを作成していることですが、色をデータ フレームの列にマッピングするのではなく、指定した文字列にマッピングしていることです。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"))

ここに画像の説明を入力

もう 1 つの方法は、行に直接ラベルを付けるか、行の目的を文脈から明らかにすることです。実際、最適なオプションは、特定の状況によって異なります。

于 2013-08-05T14:28:11.893 に答える