ggplot2堆积区域图表未填写年份

时间:2016-02-04 07:28:00

标签: r ggplot2 stacked-area-chart

我的数据结构如下(这只是一个例子):

    year    company cars
    2011    toyota  609
    2011    honda   710
    2011    ford    77
    2011    nissan  45
    2011    chevy   11
    2012    toyota  152
    2012    honda   657
    2012    ford    128
    2012    nissan  159
    2012    chevy   322
    2013    toyota  907
    2013    honda   656
    2013    ford    138
    2013    nissan  270
    2013    chevy   106
    2014    toyota  336
    2014    honda   957
    2014    ford    204
    2014    nissan  219
    2014    chevy   282

我想制作一个堆积区域图表。一个数据集的格式与上面完全相同,公式ggplot(data, aes(x=year,y=cars, fill=company)) + geom_area()可以很好地填充年份之间的区域,如下所示:

enter image description here

但是,如果另一个数据集的格式完全相同,并使用完全相同的ggplot代码生成,只使用新数据源ggplot(data2, aes(x=year,y=cars, fill=company)) + geom_area(),则图表不会填充年份之间的区域并创建一个混乱,像这样:

enter image description here

您每年都会注意到所有要点都已连接。奇怪的差距只在几年之间。

有没有人对此错误的可能来源有任何建议?

1 个答案:

答案 0 :(得分:1)

您需要根据列companyyear订购数据。以下示例说明了这一点。

library("ggplot2")
library("dplyr")

data <- data.frame(years = rep(1991:2000, times = 10), 
               company = as.factor(rep(1:10, each = 10)), 
               cars = runif(n = 100, min = 500, max = 1000))

ggplot(data, aes(x = years, y = cars, fill = company)) + 
  geom_area()

# Randomly order data
data2 <- data[sample(x = 1:100, size = 100, replace = F), ]

ggplot(data2, aes(x = years, y = cars, fill = company)) + 
  geom_area()

# Reordering the data
data3 <- arrange(data2, company, years)

ggplot(data3, aes(x = years, y = cars, fill = company)) + 
  geom_area()