这部分与我昨天的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中创建了绘图,然后在Adobe Photoshop中对其进行了着色,我想知道是否可以在R中直接生成那条弯曲的趋势线。

如果不能在ggplot2中完成此操作,那么是否有适合该任务的特定R软件包?

我不是要复制图。那不是问题。仅产生趋势线似乎是一个问题。

最佳答案

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

因为您似乎真的很喜欢这个主意,所以可以。

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

关于r - 在GGPLOT2中向条形图添加唯一趋势线,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7245522/

10-12 23:35