【问题标题】:Ggplot stacked areaggplot堆积面积
【发布时间】:2020-11-03 17:13:29
【问题描述】:

我已经在 execel 中构建了一些图表。问题是excel中的图像质量不是最好的。通过这种方式,我试图在 R 中设计相同的图。 我试图在 R

中绘制这个

我已经这样做了

c <- ggplot(crises_df, aes(x = as.numeric(Year), y = Number, fill = Crises)) +
  geom_area()

plot(c)

但是,结果是这样的,

你能帮忙解决这个问题吗?

我的数据在这里

structure(list(Year = c("1980", "1980", "1980", "1980", "1980", 
"1981", "1981", "1981", "1981", "1981", "1981", "1981", "1981", 
"1981", "1981", "1981", "1981", "1982", "1982", "1982", "1982", 
"1982", "1982", "1982", "1982", "1983", "1983", "1983", "1983", 
"1983", "1983", "1983", "1983", "1983", "1983", "1983", "1983", 
"1983", "1983", "1984", "1984", "1984", "1984", "1984", "1985", 
"1985", "1985", "1985", "1985", "1985", "1986", "1986", "1987", 
"1987", "1987", "1987", "1987", "1987", "1987", "1988", "1988", 
"1988", "1988", "1988", "1988", "1988", "1988", "1988", "1989", 
"1989", "1989", "1989", "1989", "1989", "1990", "1990", "1990", 
"1990", "1990", "1990", "1990", "1990", "1991", "1991", "1991", 
"1991", "1991", "1992", "1992", "1992", "1992", "1992", "1992", 
"1992", "1992", "1993", "1993", "1993", "1993", "1993", "1993", 
"1993", "1994", "1994", "1994", "1994", "1994", "1994", "1994", 
"1994", "1994", "1994", "1994", "1994", "1994", "1995", "1995", 
"1995", "1995", "1995", "1995", "1995", "1996", "1996", "1996", 
"1996", "1997", "1997", "1997", "1997", "1997", "1997", "1997", 
"1997", "1997", "1997", "1997", "1998", "1998", "1998", "1998", 
"1998", "1998", "1998", "1998", "1998", "1998", "1998", "1998", 
"1998", "1998", "1998", "1999", "1999", "1999", "2000", "2001", 
"2001", "2002", "2002", "2002", "2002", "2002", "2004", "2005", 
"2007", "2007", "2008", "2008", "2008", "2008", "2008", "2008", 
"2008", "2008", "2008", "2008", "2008", "2008", "2008", "2008", 
"2008", "2008", "2008", "2008", "2009", "2009", "2012", "2012", 
"2013", "2014", "2014", "2014", "2014", "2014", "2015", "2015", 
"2015", "2015", "2015", "2016"), Crises = c("Banking Crisis", 
"Banking Crisis", "Banking Crisis", "Currency Crisis", "Currency Crisis", 
"Banking Crisis", "Banking Crisis", "Banking Crisis", "Currency Crisis", 
"Currency Crisis", "Currency Crisis", "Currency Crisis", "Currency Crisis", 
"Sovereign Debt Crisis", "Sovereign Debt Crisis", "Sovereign Debt Crisis", 
"Sovereign Debt Crisis", "Banking Crisis", "Currency Crisis", 
"Currency Crisis", "Currency Crisis", "Sovereign Debt Crisis", 
"Sovereign Debt Crisis", "Sovereign Debt Crisis", "Sovereign Debt Crisis", 
"Banking Crisis", "Banking Crisis", "Banking Crisis", "Banking Crisis", 
"Currency Crisis", "Currency Crisis", "Currency Crisis", "Currency Crisis", 
"Currency Crisis", "Sovereign Debt Crisis", "Sovereign Debt Crisis", 
"Sovereign Debt Crisis", "Sovereign Debt Crisis", "Sovereign Debt Crisis", 
"Banking Crisis", "Currency Crisis", "Currency Crisis", "Sovereign Debt Crisis", 
"Sovereign Debt Crisis", "Banking Crisis", "Currency Crisis", 
"Currency Crisis", "Currency Crisis", "Sovereign Debt Crisis", 
"Sovereign Debt Crisis", "Currency Crisis", "Currency Crisis", 
"Banking Crisis", "Banking Crisis", "Banking Crisis", "Banking Crisis", 
"Currency Crisis", "Currency Crisis", "Currency Crisis", "Banking Crisis", 
"Banking Crisis", "Banking Crisis", "Banking Crisis", "Banking Crisis", 
"Banking Crisis", "Currency Crisis", "Currency Crisis", "Currency Crisis", 
"Banking Crisis", "Banking Crisis", "Banking Crisis", "Currency Crisis", 
"Sovereign Debt Crisis", "Sovereign Debt Crisis", "Banking Crisis", 
"Banking Crisis", "Currency Crisis", "Currency Crisis", "Currency Crisis", 
"Currency Crisis", "Sovereign Debt Crisis", "Sovereign Debt Crisis", 
"Banking Crisis", "Banking Crisis", "Banking Crisis", "Banking Crisis", 
"Banking Crisis", "Banking Crisis", "Banking Crisis", "Banking Crisis", 
"Currency Crisis", "Currency Crisis", "Currency Crisis", "Currency Crisis", 
"Currency Crisis", "Banking Crisis", "Banking Crisis", "Banking Crisis", 
"Currency Crisis", "Currency Crisis", "Currency Crisis", "Currency Crisis", 
"Banking Crisis", "Banking Crisis", "Banking Crisis", "Banking Crisis", 
"Banking Crisis", "Currency Crisis", "Currency Crisis", "Currency Crisis", 
"Currency Crisis", "Currency Crisis", "Currency Crisis", "Currency Crisis", 
"Currency Crisis", "Banking Crisis", "Banking Crisis", "Banking Crisis", 
"Banking Crisis", "Banking Crisis", "Banking Crisis", "Currency Crisis", 
"Banking Crisis", "Banking Crisis", "Currency Crisis", "Currency Crisis", 
"Banking Crisis", "Banking Crisis", "Banking Crisis", "Banking Crisis", 
"Banking Crisis", "Banking Crisis", "Currency Crisis", "Currency Crisis", 
"Currency Crisis", "Currency Crisis", "Currency Crisis", "Banking Crisis", 
"Banking Crisis", "Banking Crisis", "Banking Crisis", "Banking Crisis", 
"Banking Crisis", "Currency Crisis", "Currency Crisis", "Currency Crisis", 
"Currency Crisis", "Currency Crisis", "Currency Crisis", "Sovereign Debt Crisis", 
"Sovereign Debt Crisis", "Sovereign Debt Crisis", "Currency Crisis", 
"Currency Crisis", "Sovereign Debt Crisis", "Currency Crisis", 
"Banking Crisis", "Sovereign Debt Crisis", "Banking Crisis", 
"Currency Crisis", "Currency Crisis", "Sovereign Debt Crisis", 
"Sovereign Debt Crisis", "Currency Crisis", "Currency Crisis", 
"Banking Crisis", "Banking Crisis", "Banking Crisis", "Banking Crisis", 
"Banking Crisis", "Banking Crisis", "Banking Crisis", "Banking Crisis", 
"Banking Crisis", "Banking Crisis", "Banking Crisis", "Banking Crisis", 
"Banking Crisis", "Banking Crisis", "Banking Crisis", "Banking Crisis", 
"Banking Crisis", "Banking Crisis", "Banking Crisis", "Banking Crisis", 
"Currency Crisis", "Currency Crisis", "Currency Crisis", "Sovereign Debt Crisis", 
"Currency Crisis", "Banking Crisis", "Banking Crisis", "Currency Crisis", 
"Currency Crisis", "Sovereign Debt Crisis", "Currency Crisis", 
"Currency Crisis", "Currency Crisis", "Currency Crisis", "Sovereign Debt Crisis", 
"Currency Crisis"), Number = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1)), row.names = c(NA, -201L), class = "data.frame")

【问题讨论】:

    标签: r ggplot2 plot


    【解决方案1】:

    geom_area 期望 x(年份)和 y(危机)的每个组合都有一行,而您有很多;你可以使用 dplyr 的count() 来获取。

    您还需要用 0 填充缺失值(年份-危机组合),否则它将跳过该危机的那一年并留下空白;您可以使用 tidyr 的 complete() 来获取。

    组合:

    library(dplyr)
    library(tidyr)
    
    crises_df %>%
      count(Year, Crises, wt = Number) %>%
      complete(Year, Crises, fill = list(n = 0)) %>%
      ggplot(aes(as.numeric(Year), n, fill = Crises)) +
      geom_area()
    

    【讨论】:

      猜你喜欢
      • 2016-07-30
      • 2021-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多