Использовать имена столбцов динамического фрейма данных в качестве значений y графика - PullRequest
0 голосов
/ 24 января 2019

У меня есть приведенный ниже кадр данных:

year<-c(2017,2018,2019)
AT1<-c(200,100,0)
AT2<-c(10,100,0)
DT<-data.frame(year,AT1,AT2)

year AT1 AT2
1 2017 200  10
2 2018 100 100
3 2019   0   0

Обратите внимание, что мой фактический набор данных имеет такую ​​форму

enter image description here

, поскольку переменныеот -1 до 12 На основе этого кадра данных я создаю этот график ниже:

library(plotly)
plot_ly(DT, x = ~factor(year), y = ~AT1, name = 'AT1', type = 'scatter', mode = 'lines',
        line = list(color = 'rgb(205, 12, 24)', width = 4)) %>%
  add_trace(y = ~AT2, name = 'AT2', line = list(color = 'red', width = 4)) %>%
  layout(title = "Day 10 Enrollments",
         xaxis = list(title = "Years"),
         yaxis = list (title = "Count"))

Проблема заключается в том, что в массив данных DT, который я использую для своего графика, не всегда может входить-исключение из years - переменные AT1 и AT2, поскольку они появляются после обработки другого кадра данных.Например, оно может включать AT1, AT2 и AT4 или только AT2.Если, например, здесь я добавлю add_trace(y = ~AT2, name = 'AT2', line = list(color = 'red', width = 4)) %>%, график будет нарушен, поскольку AT3 не существует.На графике я вручную установил эти переменные как y, но я ищу способ автоматически распознавать, какие переменные у меня есть в моем фрейме данных, и использовать их как y. enter image description here

1 Ответ

0 голосов
/ 24 января 2019

gather столбцы AT:

DT<-tidyr::gather(DT,"AT", "value", -year)

Теперь мы используем тот факт, что график автоматически разделяет данные на основе переменной name для создания различных трасс для каждой группы:

plot_ly(DT, x = ~year, y = ~value, name = ~AT, type = 'scatter', mode = 'lines',
        line = list(width = 4)) %>%
    layout(title = "Day 10 Enrollments",
           xaxis = list(title = "Years"),
           yaxis = list (title = "Count"))

Результат:

enter image description here

Точно такой же код выполняется для данных, которые вы предоставили в качестве изображения (используя имена этих столбцов):

enter image description here

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