【问题标题】:Change path order of geom_ribbon() from default从默认更改 geom_ribbon() 的路径顺序
【发布时间】:2021-08-16 14:17:56
【问题描述】:

我对 geom_ribbon() 有疑问。我展示了几年来两个不同变量的变化。我不明白如何使 geom_ribbon 多年来一直遵循路径,而不是根据 x oder y 轴上值的增加来连接数据点。

这是一个最小的可重现示例。任何帮助表示赞赏:

library(tidyverse)
library(ggplot2)
plotdata <- data.frame(Region = factor(c("A", "A", "A", "B", "B", "B")), income = c(60, 80, 90, 40, 50, 55),
                       population = c(90,120,100, 80, 90, 100), year = factor(c(2020, 2050, 2080, 2020, 2050, 2080)),
                       income_sd = c(5, 8, 10, 2, 3, 3))

ggplot(data = plotdata, aes(x = income, y = population, shape = year,
                                   color = Region, fill = Region, group = Region)) +
  theme_minimal(base_size = 12) +
  geom_ribbon(aes(xmin = income - income_sd, xmax = income + income_sd), alpha = 0.2, color = NA) +
  geom_line() + geom_point() +
  geom_text(aes(label = year), color = "black")

在结果图中,请注意区域 A 的一切看起来都与预期的一样,因为 y 变量随年份单调增加。然而,在区域 B 的情况下,红丝带以错误的顺序连接,因为它以单调递增的顺序跟随 y 变量。这不是我想要的,我希望它遵循“年”变量。我如何做到这一点?

向 geom_ribbon() 添加 y = * 参数会删除色带,从而违背了目的。 我还玩过 geom_ribbon 的 order = * 参数,以及一年中数据框中的级别。没有成功。

谢谢!

【问题讨论】:

    标签: r ggplot2 geom-ribbon


    【解决方案1】:

    这绝对不是一个好的解决方案,但如果你只需要这个情节,看起来你可以破解它来设置你的数据:

    plotdata_1 <- plotdata[plotdata$Region!='A' | plotdata$year!='2080',]
    plotdata_2 <- plotdata[plotdata$Region=='A' & plotdata$year!='2020',]
    

    然后将两个 ggplot 对象与 geom_ribbon 的使用几乎相同(正如您在上面提供的那样)组合,除了提供这两个不同的 dfs 作为您的数据。

    【讨论】:

    • 谢谢!我打算创建的原始图有一个更大的数据集,其中包含更多“区域”甚至另一个分组变量,所以我认为这对我来说不是最好的解决方案。
    猜你喜欢
    • 2013-09-03
    • 1970-01-01
    • 2017-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多