首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >图例中的r-组合geom_vline和geom_smooth

图例中的r-组合geom_vline和geom_smooth
EN

Stack Overflow用户
提问于 2016-01-14 18:26:58
回答 1查看 2K关注 0票数 13

当在我的geom_smooth()图表中添加一个geom_vline()和一个geom_vline()时,我在传奇中遇到了一些奇怪的行为。下面是一个可重复的例子:

代码语言:javascript
运行
复制
library(ggplot2)
n <- 60

set.seed(123)
df <- data.frame(Area = sample(c("A", "B", "C", "D"), size = n, replace = TRUE),
             x = runif(n),
             y = runif(n),
             Type = sample(c("I", "II"), size = n, replace = TRUE),
             Result = sample(c("K", "L", "M"), size = n, replace = TRUE))

df.breaks <- data.frame(Area = c("B", "C"), x = c(0.8, 0.3))

ggplot(df, aes(x = x, y = y)) + 
  geom_point(aes(colour = Result, shape = Type), size = 3) + 
  geom_smooth(aes(linetype = "Smooth"), colour = "green", se = FALSE) + 
  geom_hline(yintercept = 0.3) + 
  facet_wrap(~Area) + 
  geom_vline(data = df.breaks, aes(xintercept = x, linetype = "Break"), colour = "purple") + 
  scale_colour_manual(values = c("K" = "red", "L" = "orange", "M" = "blue")) + 
  scale_linetype_manual(name = "Lines", values = c("Break" = "dashed", "Smooth" = "solid"))

正如您将注意到的“线”图例有垂直和水平线在每个项目,在第一种情况下有几条虚线,而在第二种情况下有几条实线。我正试图调整我的代码,以生成一个图例,其中(1)有一条水平绿色线,旁边有一个名为“平滑”的键;(2)一条垂直紫色达赫兹线,旁边有一个名为"Break“的键。我希望得到一些帮助,因为无论我尝试了什么(包括linetype内部/外部aes()等,或者使用scale_linetype_identity(),甚至guides中的override.aes选项),我都找不到正确的组合!

我搜索了类似的例子,尽管我在colourfillshape等上找到了其他垂直线叠加的帖子,但我找不到像我这样的linetype图例中有垂直线的帖子。任何帮助都将不胜感激!谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-30 20:25:52

对这个问题的答复太迟了,但我认为最好是有一个答案,以防别人(或我未来的自己!)对此很感兴趣。

根据@aosmith在评论部分的建议并鼓励他提供答案,我最终将情节代码替换为:

代码语言:javascript
运行
复制
ggplot(df, aes(x = x, y = y)) + 
     geom_point(aes(colour = Result, shape = Type), size = 3) + 
     geom_hline(yintercept = 0.3) + 
     facet_wrap(~Area) + 
     geom_vline(data = df.breaks, 
                aes(xintercept = x, linetype = "Break"), colour = "purple") + 
     scale_colour_manual(values = c("K" = "red", "L" = "orange", "M" = "blue")) + 
     scale_linetype_manual(name = "Lines",
                           values = c("Break" = "dashed", "Smooth" = "solid")) + 
     geom_smooth(aes(fill = "Smooth"), method = "loess", colour = "green", se = FALSE) + 
     scale_fill_discrete(name = "")

上面的最后两行替换了原始代码中的以下一行:

geom_smooth(aes(linetype = "Smooth"), colour = "green", se = FALSE) +

结果图表仍然需要一些工作,尤其是图例间距,但它解决了原来的问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34797041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档