首页 > 解决方案 > 格子中的多区域图

问题描述

我正在推动lattice它的极限。

考虑这个例子

tibble(time = c(ymd('2019-01-01'),
                      ymd('2019-01-02'),
                      ymd('2019-01-03'),
                      ymd('2019-01-01'),
                      ymd('2019-01-02'),
                      ymd('2019-01-03'),
                      ymd('2019-01-01'),
                      ymd('2019-01-02'),
                      ymd('2019-01-03')),
             variable = c('a','a','a','b','b','b', 'c','c','c'),
             value = c(1,2,3,0,0,2,2,4,3)) %>% 
  ggplot(aes(x = time, y = value, fill = variable)) + geom_area()

在此处输入图像描述

使用如何在格子中创建堆叠面积图的好解决方案?在这里不起作用,也许是因为我们有多个区域。

我们还能做lattice吗?谢谢!

标签: rggplot2plotlatticestacked-area-chart

解决方案


library(dplyr)
library(lubridate)
library(lattice)
library(latticeExtra)

df1 <- tibble(time = c(ymd('2019-01-01'),
                       ymd('2019-01-02'),
                       ymd('2019-01-03'),
                       ymd('2019-01-01'),
                       ymd('2019-01-02'),
                       ymd('2019-01-03'),
                       ymd('2019-01-01'),
                       ymd('2019-01-02'),
                       ymd('2019-01-03')),
              variable = c('a','a','a','b','b','b', 'c','c','c'),
              value = c(1,2,3,0,0,2,2,4,3))

df2 <- df1 %>% group_by(time) %>% mutate(val=cumsum(value))

xyplot(val~time, df2, group=variable,
       panel=function(x,y,...){
         panel.xyarea(x,y,...)
         panel.xyplot(x,y,...)},
       alpha=c(0.9,0.6,0.3)) 

reprex 包(v0.3.0)于 2019 年 6 月 13 日创建


推荐阅读