R 向GGPLOT2中的条形图添加唯一趋势线

R 向GGPLOT2中的条形图添加唯一趋势线,r,ggplot2,R,Ggplot2,这部分与我昨天的经历有关 这是在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") +

这部分与我昨天的经历有关

这是在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中创建了情节,然后在AdobePhotoshop中对其进行了预处理,我想知道是否可以在R中直接生成扭曲的趋势线

如果无法在ggplot2中完成此操作,是否有任何特定的R包适合此任务

我不是在问复制图表的问题。这不是问题。仅仅绘制趋势线似乎是一个问题


根据所有评论:这条曲线在科学上是可疑的,因为它不是基于数据的统计模型。(数据显示,当智能手机用户的数量没有下降时,这似乎表明智能手机用户的数量正在下降。)因此,最好的建议是“不要这样做”

既然你似乎真的很喜欢这个想法,是的,这是可能的

您可以使用
geom\u 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.

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


我可以理解这些评论,也同意这张图没有通过一些测试。不仅是学术测试,而且外观和感觉都没有停留在九十年代的测试中。提到爱德华·塔夫特也是出于美学原因。然而,我认为这是一个合法的问题,不值得投反对票,因为图表看起来很难看。有时,学者们还需要在学术期刊之外发表自己的作品,最终由编辑为大众编辑图片。因此,提前知道——最好不要尝试用R来做这些事情,这可能是值得注意的。

直线的弯曲度在某种程度上是由线条的值决定的吗?我怀疑用ggplot可以得到阴影,但是一条数学定义的曲线末端有一个箭头应该是。@Brian不,它不是数学确定的。阴影并不太重要,只是这条线不是一条直线。如果@Hadley在这里,我敢打赌他会说他希望这在ggplot2中不可能实现。半严肃的评论-将R的输出转储到illustrator中,并将图表垃圾添加到你的心内容中。它在处理杂乱的图表时比R更有效:)次要样式点:定义数据帧时,
c(rep(2008:2013,by=1))
提供与
2008:2013
完全相同的向量。