用ggplot2添加图例[重复]
Posted
技术标签:
【中文标题】用ggplot2添加图例[重复]【英文标题】:Add Legend with ggplot2 [duplicate] 【发布时间】:2021-04-16 12:10:23 【问题描述】:在我的情节中添加图例时遇到问题。我希望情节有点和线,这就是我同时使用 geom_line() 和 geom(points) 的原因。这是我的代码,其中包含一些编造的数字。当我将“颜色”移动到“aes”时,不知何故我得到了一个错误,我无法绘制它。
meanted=rnorm(13)
meantotal=rnorm(13)
meantedneg=rnorm(13)
meantedpos=rnorm(13)
totaldf=data.frame(x=c(0:12),meanted,meantotal,meantedneg,meantedpos)
pic=ggplot()+
geom_point(data=totaldf,aes(x=-x,y=meantedneg), color = "red")+
geom_point(data=totaldf,aes(x=-x,y=meantedpos), color = "blue")+
geom_point(data=totaldf,aes(x=-x,y=meanted), color = "green")+
geom_point(data=totaldf,aes(x=-x,y=meantotal),color = "black")+
geom_line(data=totaldf,aes(x=-x,y=meantedneg), color = "red")+
geom_line(data=totaldf,aes(x=-x,y=meantedpos), color = "blue")+
geom_line(data=totaldf,aes(x=-x,y=meanted), color = "green")+
geom_line(data=totaldf,aes(x=-x,y=meantotal),color = "black")
print(pic)
【问题讨论】:
重塑您的数据。这是关于该主题的帖子:Plotting two variables as lines using ggplot2 on the same graph 不确定是谁否决了这个问题。请不要因此而气馁——这是第一个问题,你给了我们一些样本数据。没有错。 【参考方案1】:正如 markus 所说,ggplot2
将为您执行此操作,如果您旋转/重塑数据,以便在单个列中定义每个所需的图例对象。
透视/重塑意味着从“宽”格式变为“长”格式。我将使用tidyr::pivot_longer
,尽管可以使用reshape
(不是我的偏好)或data.table::melt
:
tidyr::pivot_longer(totaldf, -x)
# # A tibble: 52 x 3
# x name value
# <int> <chr> <dbl>
# 1 0 meanted 1.37
# 2 0 meantotal -0.279
# 3 0 meantedneg -0.257
# 4 0 meantedpos 0.0361
# 5 1 meanted -0.565
# 6 1 meantotal -0.133
# 7 1 meantedneg -1.76
# 8 1 meantedpos 0.206
# 9 2 meanted 0.363
# 10 2 meantotal 0.636
# # ... with 42 more rows
从这里开始,
library(ggplot2)
ggplot(tidyr::pivot_longer(totaldf, -x), aes(x, value, color = name, group = name)) +
geom_path() +
geom_point() +
scale_color_manual(values = c(meantedneg="red", meantedpos="blue", meanted="green", meantotal="black"))
(仅供参考,我用set.seed(42)
预先植入了随机性以获得这个随机数据。)
【讨论】:
以上是关于用ggplot2添加图例[重复]的主要内容,如果未能解决你的问题,请参考以下文章