用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添加图例[重复]的主要内容,如果未能解决你的问题,请参考以下文章

ggplot2:如何显示图例[重复]

Ggplot2 - 我无法插入图表图例[重复]

ggplot2:每个方面网格的空间图例/操纵各个图例条目的位置[重复]

ggplot2图例没有出现的原因[重复]

使用ggplot2在叠加密度图中重复图例

当有多个 [重复] 时删除 ggplot2 中的额外图例