【问题标题】:ggplot2 legend in R when plotting points over only a subset of linesR中的ggplot2图例仅在线的子集上绘制点
【发布时间】:2018-03-13 19:40:43
【问题描述】:

我使用具有 10 条线的 ggplot 创建了一个线图,并使用子集仅向其中两条线添加了点(不同形状的)。但是,图例显示了所有线上的点。有没有办法让图例只在有这些点的线上显示一个点(形状正确)?这是我的代码:

aplot <- ggplot(weekly, aes(x=week, y=alpha, group=bin, color=bin))
 +geom_line()

aplot <- aplot +geom_point(aes(x=week, y=alpha, group=bin, 
color=bin), size=3, shape=16, subset(weekly, bin %in% c("b")))

aplot <- aplot +geom_point(aes(x=week, y=alpha, group=bin, color=bin), 
size=3, shape=17, subset(weekly, bin %in% c("t")))

data.frame 每周看起来像这样:

bin  week  alpha
b    1     10
b    2     12
b    3     16
t    1     14
t    2     18
t    3     8
m    1     13
m    2     19
m    3     9
.    .     .
.    .     .
.    .     .

谢谢!

【问题讨论】:

  • 寻求帮助时,您应该包含一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出。

标签: r ggplot2


【解决方案1】:
aplot <- ggplot() +
         geom_line(data = weekly, aes(x = week, y = alpha, group = bin, color = bin) +
         geom_point(data = subset(weekly, bin %in% c("t")), aes(x = week, y = alpha, group = bin, color = bin), size = 3, shape = 17) +
         geom_point(data = subset(weekly, bin %in% c("b")), aes(x = week, y = alpha, group = bin, color = bin), size = 3, shape = 16) + 
         guides(color = guide_legend(override.aes = list(shape = c(NA, 16, 17))))

编辑:感谢您提供数据样本并澄清您的问题。我使用guides 参数测试了代码,现在它显示了不同的图例形状

【讨论】:

  • 感谢您的回答。我知道我可以添加多个 geom_point() 参数,但问题是当我添加这样的点时,图例现在还包括这两个点(因此在这种情况下,所有箱的图例都包括形状 16 和17).我想让 bin“b”的图例条目只有形状 16,bin“t”的图例条目只有形状 16,所有其他 bin 的图例条目不包括任何形状(这样它只是一条线)。
猜你喜欢
  • 1970-01-01
  • 2012-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多