График нескольких таймсерий в R - PullRequest
0 голосов
/ 09 мая 2020

Я пытаюсь создать график временного ряда, который имеет несколько данных за годы. Я хотел бы просто построить график по годам и получить данные для запуска от даты начала до даты окончания. Здесь я преобразовал соответствующие столбцы в даты, а затем объединил их, но не получил желаемого результата.

Данные доступны на этом веб-сайте: https://www.businessinsider.co.za/coronavirus-deaths-how-pandemic-compares-to-other-deadly-outbreaks-2020-4?r=US&IR=T

Примерно так, когда данные не начинаются в том же году и не заканчиваются в том же году: https://ichef.bbci.co.uk/news/410/cpsprodpb/6E25/production/_111779182_optimised-mortality-nc.png

(период времени и количество смертей)

library(lubridate)
library(ggplot2)
otherDiseaseData <- structure(list(ï..Disease = structure(c(11L, 2L, 12L, 6L, 3L, 
                                                            1L, 9L, 7L, 13L, 4L, 5L, 8L, 10L), .Label = c("Asian Flu", "blackdeath", 
                                                                                                          "Cholera", "Covid 19", "Ebola", "HIV", "Hong Kong Flu", "Mers", 
                                                                                                          "Russian Flu", "Sars", "smallpox", "spanish flu", "Swine Flu"
                                                            ), class = "factor"), Start = c(0L, 1347L, 1918L, 1981L, 1899L, 
                                                                                            1957L, 1889L, 1968L, 2009L, 2019L, 2014L, 2012L, 2002L), End = c(1979L, 
                                                                                                                                                             1351L, 1919L, 2020L, 1923L, 1958L, 1890L, 1970L, 2010L, 2020L, 
                                                                                                                                                             2016L, 2020L, 2003L), Death = c(300000L, 225000000L, 50000L, 
                                                                                                                                                                                             2360000L, 1500000L, 1100000L, 1000000L, 1000000L, 151700L, 101526L, 
                                                                                                                                                                                             11300L, 866L, 774L)), class = "data.frame", row.names = c(NA, 
                                                                                                                                                                                                                                                       -13L))


yrs <- otherDiseaseData$Start
    yr <- as.Date(as.character(yrs), format = "%Y")
    yStart <- year(yr)

    yrs <- otherDiseaseData$End
    yr <- as.Date(as.character(yrs), format = "%Y")
    yStart <- year(yr)

    otherDiseaseData$x <- paste(otherDiseaseData$Start,otherDiseaseData$End)
    otherDiseaseData
    ggplot(otherDiseaseData, aes(y = Death, x = otherDiseaseData$x),xlim=0000-2000) + geom_point()

1 Ответ

0 голосов
/ 10 мая 2020

Я не уверен, что полностью понял, о чем вы просите, но моя интерпретация такова:

df <- reshape::melt(otherDiseaseData, measure.vars = c("Start", "End"))

ggplot(df %>% filter(Disease != "smallpox", Death != 225000000)) + 
  geom_line(aes(value,Death, colour = Disease), size = 2) + 
  theme_minimal() + 
  ggrepel::geom_label_repel(data = filter(df, Disease != "smallpox", Death != 225000000, variable != "Start"),
                                          aes(label = Disease, x = value, y = Death)) + 
  scale_y_log10() +
  theme(legend.position = "none", aspect.ratio = 1) + 
  ylab("Number of Deaths") + xlab("Year")

Я использовал пакет reshape для реорганизации данные, а затем ggrepel , чтобы пометить столбцы. Мне пришлось удалить некоторые данные, поскольку это действительно бросает вызов шкале, которую я в конечном итоге сделал logarithmi c, чтобы немного разложить данные. Это дает вам следующий график:

enter image description here

Он не идеален, но, возможно, он движется в правильном направлении? Приносим извинения, если я неправильно понял, на что вы ловили.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...