как сделать автоматически разделенные годы в календаре с echarts4r - PullRequest
0 голосов
/ 26 октября 2018

Я пытаюсь сделать calendar с echarts4r пакетом.

library(tidyverse)
library(echarts4r)

dates <- seq.Date(as.Date("2017-01-01"), as.Date("2018-12-31"), by = "day")
values <- rnorm(length(dates), 20, 6)
year <- data.frame(date = dates, values = values)

year %>% 
  e_charts(date) %>% 
  e_calendar(range = "2017",top="40") %>% 
  e_calendar(range = "2018",top="260") %>% 
  e_heatmap(values, coord.system = "calendar") %>% 
  e_visual_map(max = 30) %>% 
  e_title("Calendar", "Heatmap")%>%
  e_tooltip("item")

Но этот не был сюжетом 2018 года.
Как сделать авто-разделенные годы в calendar? Есть ли какое-либо решение типа fill от ggplot?

Ожидаемый результат: это

1 Ответ

0 голосов
/ 02 ноября 2018

API по общему признанию неуклюж и не интуитивен, но это выполнимо. Вам нужно добавить два календаря, как вы уже сделали, сослаться на их индекс в вашей функции e_heatmap (чтобы тепловые карты отображались относительно правильного календаря). Также я использую e_data, чтобы передать значения (x) для второго календаря. Обязательно настройте положение календарей, чтобы они не перекрывались (т. Е. top = 300).

dates18 <- seq.Date(as.Date("2018-01-01"), as.Date("2018-12-31"), by = "day")
dates17 <- seq.Date(as.Date("2017-01-01"), as.Date("2017-12-31"), by = "day")
values <- rnorm(length(dates18), 20, 6)

df <- data.frame(date18 = dates18, date17 = dates17, values = values)

df %>% 
    e_charts(date18) %>% 
    e_calendar(range = "2018") %>% 
    e_heatmap(values, coord.system = "calendar", calendarIndex = 0, name = "2018") %>% 
    e_data(df, date17) %>% 
    e_calendar(range = "2017", top = 300) %>% 
    e_heatmap(values, coord.system = "calendar", calendarIndex = 1, name = "2017") %>%
    e_visual_map(max = 30) 

Обновление

Начиная с версии 0.2.0 вышеизложенное можно сделать, сгруппировав данные по годам, что намного яснее и проще:

dates <- seq.Date(as.Date("2017-01-01"), as.Date("2018-12-31"), by = "day")
values <- rnorm(length(dates), 20, 6)

year <- data.frame(date = dates, values = values)

year %>% 
  dplyr::mutate(year = format(date, "%Y")) %>% # get year from date
  group_by(year) %>% 
  e_charts(date) %>% 
  e_calendar(range = "2017",top="40") %>% 
  e_calendar(range = "2018",top="260") %>% 
  e_heatmap(values, coord_system = "calendar") %>% 
  e_visual_map(max = 30) %>% 
  e_title("Calendar", "Heatmap")%>%
  e_tooltip("item") 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...