Я пытаюсь построить график с подтверждением соответствия стран и восстановленных данных, где названия стран будут отображаться в раскрывающемся меню, и в то же время можно будет увидеть график конкретной страны. Мой источник данных - набор данных вируса короны Университета Джонса Хопкинса.
Раскрывающееся меню идет правильно, но сюжет не идет. У меня следующие проблемы.
- Подтверждение заговора против восстановленного не наступает. Для Китая отображается только маркер.
- Но для США и Франции ничего не видно.
- Также легенды не идут для США и Франции.
Может кто-нибудь выручи меня? Дайте мне знать, если вам нужны дополнительные разъяснения или какие-либо другие данные.
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)