многослойная диаграмма в решетке - PullRequest
1 голос
/ 13 июня 2019

Я толкаю 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()

enter image description here

Используя хорошее решение в , как создать диаграмму с областями в решетке? здесь не работает, возможно, потому что у нас есть несколько областей.

Можем ли мы сделать это с lattice? Спасибо!

1 Ответ

2 голосов
/ 13 июня 2019
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)) 

Создано в 2019-06-13 пакетом Представить (v0.3.0)

...