如何修复 f(...) 中的错误:美学不能随丝带而变化

cms*_*cms 5 r ggplot2 stacked-area-chart

我正在使用 ggplot2 创建一个堆积面积图,显示一段时间内许多不同研究站的足迹(面积)。我想要如下图所示的东西,但 y 轴上有面积,并由不同的研究站着色:

堆积面积图
(来源:r-graph-gallery.com

我已经尝试过类似帖子的元素,但无法使其发挥作用。

R 中的 ggplot 出现问题 - “f(...) 中的错误:美学不能随功能区而变化”

在 R 中获取堆积面积图

https://www.r-graph-gallery.com/136-stacked-area-chart/

我在此处提供了数据的 .csv 子集。

下面是我正在使用的代码。

fp <- read.csv("fp.csv")

fp$Year <- as.numeric(rep(fp$Year)) #change Year to numeric

p2 <- fp %>% 
  filter(Exist == 1) %>% # Select only existing structures
  group_by(Year, Station) %>%
  summarise(Sum_Area = sum(Area)) %>% 
  arrange(desc(Year)) %>% 
  ggplot(aes(x = Year, y = Sum_Area, fill = Sum_Area)) +
  geom_area(stat = "identity", position = "stack")
p2

Run Code Online (Sandbox Code Playgroud)

我总是收到错误消息:f(...) 中的错误:美学不能随丝带而变化

Pau*_*eux 6

如果您的填充变量是整数或数值变量而不是字符或因子变量,则可能会发生这种情况。

重现错误

airquality %>%
    ggplot(aes(x = Day, y = Ozone, fill = Month)) +
    geom_area()
#Error: Aesthetics can not vary with a ribbon
Run Code Online (Sandbox Code Playgroud)

修复错误

airquality %>%
    mutate(Month = as.character(Month)) %>%
    ggplot(aes(x = Day, y = Ozone, fill = Month)) +
    geom_area()
Run Code Online (Sandbox Code Playgroud)

这当然是一个无用的情节,只是为了说明错误。