Jim*_*Jim 8 r ggplot2 stacked-area-chart
这是我的数据的链接.
我使用以下代码:
#read in data
data = read.csv("ggplot_data.csv")
#order by group then year
data = arrange(data, group, year)
#generage ggplot stacked area chart
plot = ggplot(data, aes(x=year,y=value, fill=group)) +
geom_area()
plot
Run Code Online (Sandbox Code Playgroud)
如您所见,此图表的三个不同部分有奇数洞.
我以前遇到过这个问题并询问过这个问题,然后提供的答案是我需要按组对数据进行排序,然后是年份.当时,那个答案修好了我的洞.但是,这次似乎没有消除所有漏洞.有帮助吗?
差距的原因是某些时间序列比其他时间序列开始得晚.当出现第一个非消失值时,新区域以非连续跳转开始.然而,正上方的区域通过线性插值连接到下一个点.这导致了差距.
例如,看看最左边的差距.橄榄区域始于1982年垂直跳跃的间隙之后.然而,绿色区域从1981年(橄榄区域为零)的值线性增加到1982年(橄榄区突然贡献的值)的值.
你可以做的是,例如,在1975年之后开始的每个时间序列的开头添加一个零值.我使用dplyr功能来创建这些额外的第一年的数据框:
first_years <- group_by(data, group, group_id) %>%
summarise(year = min(year) - 1) %>%
filter(year > 1974) %>%
mutate(value = 0, value_pct = 0)
first_years
## Source: local data frame [3 x 5]
## Groups: group [3]
##
## group group_id year value value_pct
## (fctr) (int) (dbl) (dbl) (dbl)
## 1 c 10006 1981 0 0
## 2 e 10022 2010 0 0
## 3 i 24060 2002 0 0
Run Code Online (Sandbox Code Playgroud)
如您所见,这三个新值恰好符合图中的三个间隙.现在,您可以将这些新数据框与data以前相同的方式组合并进行排序:
data_complete <- bind_rows(data, first_years) %>%
arrange(year, group)
Run Code Online (Sandbox Code Playgroud)
然后情节没有差距:
ggplot(data_complete, aes(x=year,y=value, fill=group)) +
geom_area()
Run Code Online (Sandbox Code Playgroud)