【问题标题】:Adding a Unique Trend Line to a Barplot in GGPLOT2向 GGPLOT2 中的条形图添加独特的趋势线
【发布时间】:2011-08-30 15:16:28
【问题描述】:

这部分与我昨天的question 有关。

这是在 ggplot2 中创建的数据和绘图。

df = data.frame(date=c(rep(2008:2013, by=1)),
                value=c(303,407,538,696,881,1094))


ggplot(df, aes(date, value, width=0.64)) + 
        geom_bar(stat = "identity", fill="#336699", colour="black") +
        ylim(c(0,1400)) + opts(title="U.S. Smartphone Users") +
        opts(axis.text.y=theme_text(family="sans", face="bold")) +
        opts(axis.text.x=theme_text(family="sans", face="bold")) +
        opts(plot.title = theme_text(size=14, face="bold")) +
        xlab("Year") + ylab("Users (in millions)") +        
        opts(axis.title.x=theme_text(family="sans")) +
        opts(axis.title.y=theme_text(family="sans", angle=90)) +
        geom_segment(aes(x=2007.6, xend=2013, y=550, yend=1350), arrow=arrow(length=unit(0.4,"cm")))

是否可以用ggplot2在下图中产生波浪状的趋势线

我在 R 中创建了情节,然后在 Adob​​e Photoshop 中对其进行了美化,我想知道是否可以直接在 R 中生成曲线。

如果这不能在 ggplot2 中完成,是否有任何特定的 R 包可以完成这项任务?

我不是在问重现图表。那不是问题。仅仅生成趋势线似乎是个问题。

【问题讨论】:

  • 线的曲线在数学上是否由条形的值以某种方式确定?我怀疑阴影可以用 ggplot 得到,但应该是数学定义的曲线,末端有一个箭头。
  • @Brian 不,这不是数学确定的。阴影不是很重要,只是线不是直线。
  • 如果@Hadley 在这里,我敢打赌他会说他希望这在 ggplot2 中是不可能的。
  • 准严肃评论 - 将 R 的输出转储到 illustrator 中,并将图表垃圾添加到您的心脏内容中。它在混乱图表方面比 R 更有效:)
  • 次要风格点:定义数据框时,c(rep(2008:2013, by=1)) 为您提供与2008:2013 完全相同的向量。

标签: r ggplot2


【解决方案1】:

根据所有 cmets:波浪线在科学上是可疑的,因为它不是基于数据的统计模型。 (当数据显示没有这样的事情时,它似乎显示智能手机用户的数量趋于平稳。)所以最好的建议是“不要这样做”。

因为你似乎真的很热衷于这个想法,是的,这是可能的。

您可以使用geom_line 添加任何您喜欢的行。要在您的信息图中复制这条愚蠢的线,您可以做一条直线加上一条正弦曲线来让它摆动。假设你的情节被命名为p

p + geom_line(
  aes(date, value), 
  data = data.frame(
    date = seq(2008, 2013, length.out = n),
    value = seq(600, 1300, length.out = n) + 100 * sin(seq(0, 4 * pi, length.out = n))  
  ), 
  arrow = arrow(length = unit(0.4, "cm"))
)

更好的方法是使用黄土平滑曲线。

p + geom_smooth(method = "loess", se = FALSE)  #maybe also span = 0.5, for extra wigglyness.

【讨论】:

    【解决方案2】:

    您的问题的答案显然是:不要对 R 执行此操作。R 未针对此进行优化。如果你使用一些矢量图形程序,你会更快更接近你想要的。使用 Illustrator、Inkscape(免费)或任何您喜欢的图形工具。也许您还想在 R 中创建图形并稍后在其中一个程序中对其进行修改。

    我可以理解 cmets 并且也同意这个图表没有通过一些测试。不仅是学术测试,还有外观和感觉不卡在九十年代的测试。提到爱德华·塔夫特也是出于审美原因。但是我认为这是一个合法的问题,不值得投反对票,只是因为图表看起来很丑。有时,学者们还需要让他们的东西在学术期刊之外发表,而图形最终由编辑为大众编辑。所以提前知道——最好不要尝试用 R 做这样的事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 2021-09-08
      • 2021-06-17
      • 1970-01-01
      相关资源
      最近更新 更多