将图例添加到 r 中的 geom_line() 图
Add legend to geom_line() graph in r
我一直在尝试将图例添加到我的 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 )
我的数据框'Summary'如下:
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
才能制作图例,将colour
移动到aes(...)
内会自动制作图例。然后我们可以通过 scale_color_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"))
提供更紧凑的答案,仅使用单个 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"))
然后您可以通过 scale_color
系列助手自定义图例。
如前所述,必须在美学中指定颜色才能有图例。然而,美学中的颜色实际上只是一个标签,然后会传递到其他层次。可以使用 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')
我一直在尝试将图例添加到我的 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 )
我的数据框'Summary'如下:
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
才能制作图例,将colour
移动到aes(...)
内会自动制作图例。然后我们可以通过 scale_color_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"))
提供更紧凑的答案,仅使用单个 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"))
然后您可以通过 scale_color
系列助手自定义图例。
如前所述,必须在美学中指定颜色才能有图例。然而,美学中的颜色实际上只是一个标签,然后会传递到其他层次。可以使用 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')