使用点图将图例添加到 ggplot2 线
Add legend to ggplot2 line with point plot
我对 ggplot2 中的图例有疑问。我设法在同一张图中绘制了两条线和两个点,并想添加一个使用两种颜色的图例。这是使用的代码
P <- ggplot() + geom_point(data = data_p,aes(x = V1,y = V2),shape = 0,col = "#56B4E9") + geom_line(data = data_p,aes(x = V1,y = V2),col = "#56B4E9")+geom_point(data = data_p,aes(x = V1,y = V3),shape = 1,col = "#009E73") + geom_line(data = data_p,aes(x = V1,y = V3),col = "#009E73")
输出是
enter image description here
我尝试使用 scale_color_manual 和 scale_shape_manual 以及 scale_line_manual,但它们不起作用。
P + scale_color_manual(name = "group",values = c('#56B4E9' = '#56B4E9','#009E73' = '#009E73'),
breaks = c('#56B4E9','#009E73'),labels = c('B','H')) +
I want it like this
如果对你有帮助的话,这里是简单的数据。
5 0.49216 0.45148
10 0.3913 0.35751
15 0.32835 0.30361
data_p
我会分两步解决这个问题。
通常,要在指南中获取内容,ggplot2 希望您将 "aesthetics" 之类的颜色放入 aes() 函数中。我通常在 ggplot() 中执行此操作,而不是针对每个 "geom" 单独执行此操作,尤其是在单个数据帧中一切都有意义的情况下。
我的第一步是稍微重新制作您的数据框。我会使用 tidyr 包(tidyverse 的一部分,比如 ggplot2,它非常适合重新格式化数据,值得随时学习),然后做这样的事情
#key is the new variable that will be your color variable
#value is the numbers that had been in V2 and V3 that will now be your y-values
data_p %>% tidyr::gather (key = "color", value = "yval", V2, V3)
#now, I would rewrite your plot slightly
P<-(newdf %>% ggplot(aes(x=V1,y=yval, colour=color))
#when you put the ggplot inside parentheses,
#you can add each new layer on its own line, starting with the "+"
+ geom_point()
+ geom_line()
+ scale_color_manual(values=c("#56B4E9","#009E73"))
#theme classic is my preferred look in ggplot, usually
+ theme_classic()
)
我对 ggplot2 中的图例有疑问。我设法在同一张图中绘制了两条线和两个点,并想添加一个使用两种颜色的图例。这是使用的代码
P <- ggplot() + geom_point(data = data_p,aes(x = V1,y = V2),shape = 0,col = "#56B4E9") + geom_line(data = data_p,aes(x = V1,y = V2),col = "#56B4E9")+geom_point(data = data_p,aes(x = V1,y = V3),shape = 1,col = "#009E73") + geom_line(data = data_p,aes(x = V1,y = V3),col = "#009E73")
输出是 enter image description here
我尝试使用 scale_color_manual 和 scale_shape_manual 以及 scale_line_manual,但它们不起作用。
P + scale_color_manual(name = "group",values = c('#56B4E9' = '#56B4E9','#009E73' = '#009E73'),
breaks = c('#56B4E9','#009E73'),labels = c('B','H')) +
I want it like this
如果对你有帮助的话,这里是简单的数据。
5 0.49216 0.45148
10 0.3913 0.35751
15 0.32835 0.30361
data_p
我会分两步解决这个问题。
通常,要在指南中获取内容,ggplot2 希望您将 "aesthetics" 之类的颜色放入 aes() 函数中。我通常在 ggplot() 中执行此操作,而不是针对每个 "geom" 单独执行此操作,尤其是在单个数据帧中一切都有意义的情况下。
我的第一步是稍微重新制作您的数据框。我会使用 tidyr 包(tidyverse 的一部分,比如 ggplot2,它非常适合重新格式化数据,值得随时学习),然后做这样的事情
#key is the new variable that will be your color variable
#value is the numbers that had been in V2 and V3 that will now be your y-values
data_p %>% tidyr::gather (key = "color", value = "yval", V2, V3)
#now, I would rewrite your plot slightly
P<-(newdf %>% ggplot(aes(x=V1,y=yval, colour=color))
#when you put the ggplot inside parentheses,
#you can add each new layer on its own line, starting with the "+"
+ geom_point()
+ geom_line()
+ scale_color_manual(values=c("#56B4E9","#009E73"))
#theme classic is my preferred look in ggplot, usually
+ theme_classic()
)