web-dev-qa-db-ja.com

rのgeom_line()グラフに凡例を追加

私はggplotに凡例を追加しようとしましたが、惨めに失敗しました。関数scale_colour_manual()を試しましたが、凡例が表示されません。

ggplot()+
geom_line(data=Summary,aes(y=Y1,x= X),colour="darkblue",size=1 )+
geom_line(data=Summary,aes(y=Y2,x= X),colour="red",size=1  )

私のデータフレーム「サマリー」は次のとおりです。

  X           Y1           Y2
139 1.465477e+16 7.173075e+15
277 1.044803e+16 9.275002e+15
415 1.059258e+16 8.562518e+15
553 1.033283e+16 8.268984e+15
691 9.548019e+15 1.022248e+16
830 1.008212e+16 8.641891e+15
968 9.822061e+15 9.315856e+15
1106 9.948143e+15 9.178694e+15
1244 1.013922e+16 8.825904e+15
1382 9.815094e+15 9.283662e+15

同じグラフ上でY1、Y2をXに対してプロットし、側面に凡例を追加する方法を教えてください。

15
ausworli

ggplotには凡例を作成するためにaesが必要です。colouraes(...)内に移動すると、凡例が自動的に作成されます。次に、scale_color_discreteを介して凡例ラベルを調整できます。

ggplot()+
    geom_line(data=Summary,aes(y=Y1,x= X,colour="darkblue"),size=1 )+
    geom_line(data=Summary,aes(y=Y2,x= X,colour="red"),size=1) +
    scale_color_discrete(name = "Y series", labels = c("Y2", "Y1"))

enter image description here

22
Nate

すでに述べたように、伝説が存在するためには、美学の中で色を指定する必要があります。ただし、美的感覚の内側の色は実際には単なるラベルであり、そのラベルは他のレイヤーに引き継がれます。カスタム色の設定は、scale_color_manualと凡例ラベルは、labsで修正できます。

ggplot(data=Summary)+
  geom_line(mapping=aes(y=Y1,x= X,color="Y1"),size=1 ) +
  geom_line(mapping=aes(y=Y2,x= X,color="Y2"),size=1) +
  scale_color_manual(values = c(
    'Y1' = 'darkblue',
    'Y2' = 'red')) +
  labs(color = 'Y series')
13
Adam

単一のgeom呼び出しのみを使用する、よりコンパクトな回答を提供するには:

ggplot2は、長い(多くの列)よりも長いデータ(キーと値のペア)の方が好きです。これには、tidyrreshape2などのパッケージを使用してプロットする前にデータを変換する必要があります。この方法で、aes呼び出し内に色を示す変数を持たせて、凡例を作成できます。

データについて:

library(tidyr)
library(ggplot2)

plot_data <- gather(data, variable, value, -x)

ggplot(plot_data, aes(x = x, y = value, color = variable)) +
  geom_line() +
  scale_color_manual(values = c("firebrick", "dodgerblue")) 

その後、scale_color一連のヘルパーを使用して凡例をカスタマイズできます。

5
Jake Kaupp