将图例添加到r中的geom_line()图形

aus*_*rli 18 r data-visualization ggplot2

我一直试图为我的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  )
Run Code Online (Sandbox Code Playgroud)

我的数据框"摘要"如下:

  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
Run Code Online (Sandbox Code Playgroud)

请告诉我如何在同一图表上对X绘制Y1,Y2,并在侧面添加图例.

Nat*_*ate 24

ggplot需要aes制作一个传奇,在colour里面移动aes(...)会自动构建一个图例.然后我们可以通过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"))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 内森,谢谢你的回复.在aes()中放置颜色有效.我并不希望自己能想到这一点! (3认同)
  • 问题在于`aes()` 中提供的颜色与显示的颜色没有任何共同之处。你也可以设置 `colour='a'` 和 `colourd='b'`。 (3认同)
  • 此解决方案不尊重您在“aes()”中添加的颜色 (3认同)

Ada*_*dam 15

如上所述,必须在美学中指定颜色才能有传奇.然而,审美中的颜色实际上只是一个标签,然后传递到其他层.可以使用设置自定义颜色,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')
Run Code Online (Sandbox Code Playgroud)


Jak*_*upp 5

要提供仅使用一个geom调用的更紧凑的答案:

ggplot2确实喜欢长数据(键值对)胜过宽数据(许多列)。这要求您在使用诸如tidyr或的程序包绘制数据之前先对数据进行转换reshape2。这样,您可以在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")) 
Run Code Online (Sandbox Code Playgroud)

然后,您可以通过scale_color一系列助手自定义图例。