Подзаголовки с общей легендой в R - PullRequest
1 голос
/ 19 июня 2020

Я сделал два сюжета, используя plotly, которые работают нормально по отдельности, но при объединении с использованием вспомогательного сюжета я не могу понять, как объединить легенды. Я попытался использовать showlegend = F в plot_ly на одном из графиков, но это просто полностью удаляет его - я хочу управлять обоими частями с одной и той же легендой.

Мой код выглядит следующим образом:

coronavirus_not_china <- coronavirus %>%
  filter(!(country == "China"))

cases_not_china_plot <- coronavirus_not_china %>% 
  group_by(type, date) %>%
  summarise(total_cases = sum(cases)) %>%
  pivot_wider(names_from = type, values_from = total_cases) %>%
  arrange(date) %>%
  mutate(active = confirmed - death - recovered) %>%
  mutate(active_total = cumsum(active),
                recovered_total = cumsum(recovered),
                death_total = cumsum(death)) %>%
  plot_ly(x = ~ date,
                  y = ~ active_total,
                  name = 'Active', 
                  fillcolor = '#1f77b4',
                  type = 'scatter',
                  mode = 'none', 
                  stackgroup = 'one',
                  showlegend = F) %>%
  add_trace(y = ~ death_total, 
             name = "Death",
             fillcolor = '#E41317') %>%
  add_trace(y = ~recovered_total, 
            name = 'Recovered', 
            fillcolor = 'forestgreen') %>%
  layout(title = "Distribution of Covid19 Cases outside China",
         legend = list(x = 0.1, y = 0.9),
         yaxis = list(title = "Number of Cases", showgrid = T))
coronavirus_china <- coronavirus %>%
  filter((country == "China"))

cases_china_plot <- coronavirus_china %>% 
  group_by(type, date) %>%
  summarise(total_cases = sum(cases)) %>%
  pivot_wider(names_from = type, values_from = total_cases) %>%
  arrange(date) %>%
  mutate(active = confirmed - death - recovered) %>%
  mutate(active_total = cumsum(active),
                recovered_total = cumsum(recovered),
                death_total = cumsum(death)) %>%
  plot_ly(x = ~ date,
                  y = ~ active_total,
                  name = 'Active', 
                  fillcolor = '#1f77b4',
                  type = 'scatter',
                  mode = 'none', 
                  stackgroup = 'one',
                  showlegend = T) %>%
  add_trace(y = ~ death_total, 
             name = "Death",
             fillcolor = '#E41317') %>%
  add_trace(y = ~recovered_total, 
            name = 'Recovered', 
            fillcolor = 'forestgreen') %>%
  layout(title = "Distribution of Covid19 Cases inside China",
         legend = list(x = 0.1, y = 0.9),
         yaxis = list(title = "Number of Cases", showgrid = F))

И я создаю подзаголовки как:

subplot(cases_not_china_plot, cases_china_plot, nrows = 2, margin = 0.05, shareX = T) %>%
  layout(title="Coronavirus cases outside China and in China", ylab("Number of cases"))

Я новичок в R, поэтому, если есть более разумный способ сделать то, что я хочу, дайте мне знать . С приведенным выше кодом мой результат:

подзаголовки с plotly

С уважением

...