Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将图例添加到r中的geom_line()图形_R_Ggplot2_Data Visualization - Fatal编程技术网

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

将图例添加到r中的geom_line()图形,r,ggplot2,data-visualization,R,Ggplot2,Data Visualization,我一直试图给我的故事情节增添传奇色彩,但不幸地失败了。我尝试了功能scale\u color\u 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 1

我一直试图给我的故事情节增添传奇色彩,但不幸地失败了。我尝试了功能
scale\u color\u 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,并在侧面添加图例。

ggplot
需要
aes
制作图例,在
aes(…)
内部移动
颜色将自动生成图例。然后我们可以通过
scale\u color\u manual
调整标签颜色配对:

ggplot()+
  geom_line(data=Summary,aes(y=Y1,x= X,colour="Y1"),size=1 )+
  geom_line(data=Summary,aes(y=Y2,x= X,colour="Y2"),size=1) +
  scale_color_manual(name = "Y series", values = c("Y1" = "darkblue", "Y2" = "red"))[![enter image description here][1]][1]

要提供更简洁的答案,只需使用一个
geom
呼叫:

ggplot2
更喜欢长数据(键值对)而不是宽数据(多列)。这要求您在使用诸如
tidyr
restrape2
之类的软件包打印数据之前对其进行转换。这样,您就可以在
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")) 
library(tidyr)
图书馆(GG2)

plot_data如前所述,必须在美学中指定颜色,才能有图例。然而,美感中的颜色实际上只是一个标签,然后传递到其他层。设置自定义颜色可以通过
scale\u color\u 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')

内森,谢谢你的回复。在aes()中放置颜色是可行的。我不希望我能自己解决它!问题在于
aes()
中提供的颜色与显示的颜色没有任何共同之处。你也可以设置
colour='a'
coloud='b'
。内森,非常感谢!搜索提示,将其写入aes中一段时间。这就解决了!这并没有达到预期的效果。Y1应该是蓝色的,Y2应该是红色的。查看数据,除了一种情况外,Y1在所有情况下都大于Y2,因此蓝线应该主要位于红线上方,但事实并非如此。此解决方案不考虑您在
aes()
中添加的颜色,尽管您提到可以使用scale\u color,这个答案并没有提供关于如何创建图例的reprex。@JessicaBurnett添加了scale调用