如何在R和ggplot2中获得具有多个数据集的单个趋势线?

时间:2012-10-10 01:51:46

标签: r ggplot2

我有三十年的多个数据来源。 数据不连续,并在多个地方重叠。我想以不同的颜色绘制每个数据源的点,然后添加一个使用所有数据源的趋势线。 包含的代码包含一些示例数据和两个绘图示例。第一次调用ggplot,绘制所有数据的单个趋势线。第二个ggplot调用,用自己的趋势线清楚地绘制不同颜色的每个源。

    library(ggplot2)
    the.data <- read.table( header=TRUE, sep=",", 
    text="source,year,value
    S1,1976,56.98
    S1,1977,55.26
    S1,1978,68.83
    S1,1979,59.70
    S1,1980,57.58
    S1,1981,61.54
    S1,1982,48.65
    S1,1983,53.45
    S1,1984,45.95
    S1,1985,51.95
    S1,1986,51.85
    S1,1987,54.55
    S1,1988,51.61
    S1,1989,52.24
    S1,1990,49.28
    S1,1991,57.33
    S1,1992,51.28
    S1,1993,55.07
    S1,1994,50.88
    S2,1993,54.90
    S2,1994,51.20
    S2,1995,52.10
    S2,1996,51.40
    S3,2002,57.95
    S3,2003,47.95
    S3,2004,48.15
    S3,2005,37.80
    S3,2006,56.96
    S3,2007,48.91
    S3,2008,44.00
    S3,2009,45.35
    S3,2010,49.40
    S3,2011,51.19") 
    ggplot( the.data, aes( the.data$year, the.data$value ) ) + geom_point() + geom_smooth()
    #ggplot( the.data, aes( the.data$year, the.data$value, color=the.data$source ) ) + geom_point() + geom_smooth()

第二个调用显示彩色数据点,我想添加一个代表所有年份的连续趋势线。

1 个答案:

答案 0 :(得分:5)

像这样:

ggplot(the.data, aes( x = year, y = value ) ) + 
    geom_point(aes(colour = source)) + 
    geom_smooth(aes(group = 1))

enter image description here

一些注意事项:

  • 不要将美学映射到像the.data$year这样的孤立向量。 (直到你真正了解自己正在做什么,并知道何时违反该规则。)只需使用列名。

  • 在各自的geom来电中,将您想要的美学分布在不同的图层中。在这种情况下,我希望点的颜色不同,但对于平滑线,我希望将数据组合在一起(group = 1)。