如何在ggplot2中制作累积层绘图

3

我有一个类似下面例子的数据:

library(dplyr)
nycflights13::flights %>% 
  mutate(date = as.Date(paste(day, month, year, sep = '-'), format = '%d-%m-%Y')) %>% 
  select(date, carrier, distance)

现在我需要构建一个图表,其中每天的距离堆积总和会叠加到不同的运营商上。我的意思是类似于:
ggplot(diamonds, aes(x = price, fill = cut)) + geom_area(stat = "bin") 

但需将 sum 作为 stat 进行尝试。

我已经尝试过了。

nycflights13::flights %>% 
  mutate(date = as.Date(paste(day, month, year, sep = '-'), format = '%d-%m-%Y')) %>% 
  select(date, carrier, distance) %>% 
  ggplot() + 
  geom_area(aes(date, distance, fill = carrier, group = carrier), stat = 'sum')

但它并没有起到作用,导致

Error in f(...) : 美学不能随着一个带变化

使用geom_bar相当容易,但有什么想法可以制作堆叠的geom_area图?

1个回答

3
library(dplyr)
nycflights13::flights %>% 
  mutate(date = as.Date(paste(day, month, year, sep = '-'), 
                        format = '%d-%m-%Y')) %>% 
  select(date, carrier, distance) %>% 
  group_by(date, carrier) %>% 
  summarise(distance = sum(distance)) %>% 
  ggplot() + 
  geom_area(aes(date, distance, fill = carrier, 
                group = carrier), stat = 'identity')

应该就可以解决问题了。 在此输入图片描述


很好。根据我的个人经验,我会避免直接将数据传递到ggplot函数中。将更改后的数据框分配给一个新对象。这样以后使用多个数据框绘制多个图表会更容易,而你肯定会需要这么做。 - tjebo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接