R Полностью раскрывающиеся меню, в которых количество элементов в раскрывающемся списке варьируется в зависимости от данных в столбце. - PullRequest
0 голосов
/ 24 апреля 2020

Я пытаюсь построить график с подтверждением соответствия стран и восстановленных данных, где названия стран будут отображаться в раскрывающемся меню, и в то же время можно будет увидеть график конкретной страны. Мой источник данных - набор данных вируса короны Университета Джонса Хопкинса.

Раскрывающееся меню идет правильно, но сюжет не идет. У меня следующие проблемы.

  1. Подтверждение заговора против восстановленного не наступает. Для Китая отображается только маркер.
  2. Но для США и Франции ничего не видно.
  3. Также легенды не идут для США и Франции.

Может кто-нибудь выручи меня? Дайте мне знать, если вам нужны дополнительные разъяснения или какие-либо другие данные.

library(stringdist)    
library(plotly)    
library(magrittr)   
library(dplyr)

df_str <- deparse(substitute(confirmed_raw))         
var_str <- substr(df_str, 1, str_length(df_str) - 4)

# Clean up the Jhon Hopkins Data, make it short to long
clean_jhd_to_long <- function(df) {   
  df_str <- deparse(substitute(df))  
  var_str <- substr(df_str, 1, str_length(df_str) - 4)    

  df%>% group_by(`Country/Region`) %>%   
    filter(`Country/Region` != "Cruise Ship") %>%    
    select(-`Province/State`, -`Lat`, -`Long`) %>%     
    summarise_all(funs(sum)) %>%      
    distinct() %>%   
    ungroup() %>%       
    rename(country = `Country/Region`) %>%      
    pivot_longer(-country, names_to = "date_str", values_to = var_str) %>%    
    mutate(date = mdy(date_str)) %>%     
    select(country, date, !! sym(var_str))    
}   

# Extract data     
confirmed_raw <- read_csv("https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master   /csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv")         
deaths_raw <- read_csv("https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_deaths_global.csv")   
recovered_raw <- read_csv("https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_recovered_global.csv")

# Merge confirmed, deaths and recovered data     
jh_covid19_data <- clean_jhd_to_long(confirmed_raw) %>%     
  full_join(clean_jhd_to_long(deaths_raw)) %>%     
  full_join(clean_jhd_to_long(recovered_raw))     

#Extract "China", "US" and "France" data     
confirmed_vs_recovered <- jh_covid19_data %>% filter(`country` == "China" | `country` == "France" | `country` == "US") %>% group_by(`country`,`date`)       
countries <- unique(pull(confirmed_vs_recovered, country))    
confirmed <- confirmed_vs_recovered %>% select(`confirmed`)     
recovered <- confirmed_vs_recovered %>% select(`recovered`)     
p <- plot_ly(confirmed_vs_recovered,     
             type = "scatter",   
             mode = "lines",     
             x = ~date,        
             y = confirmed[confirmed$country == countries[1],][3],     
             name = "confirmed")     
p <- p %>% add_lines(x = ~date, y = recovered[recovered$country == countries[1],][3], name =      "recovered", visible = T)    
for (co in 2:length(countries)) {     
  print(countries[co])        
  print(co)     
  p <- p %>% add_lines(x = ~date, y = confirmed[confirmed$country == countries[co],][3], name = col, visible = F)      
  p <- p %>% add_lines(x = ~date, y = recovered[recovered$country == countries[co],][3], name = col, visible = F)      
}     
p <- p %>%      
  layout(     
    title = paste0("confirmed vs recovered"," - ",countries[co]),    
    xaxis = list(title = "x"),     
    yaxis = list(title = "y"),     
    updatemenus = list(     
                   list(      
                      y = 0.7,     
                      buttons = lapply (1:length(countries), function(co){     
                                                               list(method="restyle", 
                                                               args = list("visible", 
                                                               countries == c(countries[co])),                  
                                                               label = countries[co])              
                       }
     ))))    
print(p) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...