Как использовать непрерывную переменную в качестве цветового аргумента для диаграммы с плотно? - PullRequest
0 голосов
/ 09 мая 2019

Я работал с flexdashboard, созданным с помощью Rmarkdown, и у меня были проблемы с отображением нескольких графиков. После долгих испытаний я определил, что проблема color =, которую я посылал на следующий график, вызывала проблему:

p1 <- plot_ly(coursetable2,
    x = ~title,  
    color = ~open+enrolled, 
    y = ~percent, 
    type = 'bar', 
    name = 'Seats Taken', 
    text =~paste('Seats Taken: ', enrolled, '</br> Open Seats: ' , open))

p1

Переменные open и enrolled являются непрерывными числовыми значениями.

График сгенерирован нормально в RStudio, но не отображался в html-файле, созданном после того, как я связал файл.

Как ни странно, это также сделало график leaflet в том же файле не отображаемым в конечном html-файле. Код leaflet выглядит следующим образом:

mytext<-paste("City: ", maptable$name, "<br/>", "People: ", 
    maptable$val, "<br/>", sep="") %>%
    lapply(htmltools::HTML)

pal<-colorNumeric(
    palette = "viridis",
    domain = maptable$val)


leaflet(maptable) %>%
  addTiles()  %>%
  setView( lat=41.5, lng=-73 , zoom=8) %>%
  addProviderTiles("OpenStreetMap.BlackAndWhite") %>%
  addCircleMarkers(~long, ~lat,
  fillOpacity = 0.7, color=~pal(val), radius=~sqrt(val)+5, stroke=FALSE,
  label = mytext,
  labelOptions = labelOptions( style = list("font-weight" = "normal", 
  padding = "3px 8px"), textsize = "13px", direction = "auto")
  )

Предупреждение, которое я получаю, гласит:

textfont.color (пока) не поддерживает массивы данных

Когда я беру цветовой аргумент из приведенного выше кода для графика p1, отображаются все мои графические элементы.

Если я определю палитру, как в приведенном ниже коде, все графики будут генерироваться нормально.

pal2<-colorNumeric(
   palette="viridis",
   domain=coursetable2$enrolled+coursetable2$open
   )

p1<-plot_ly(coursetable2,
    x = ~title,  
    showlegend=FALSE,
    color = ~pal2(open+enrolled), 
    y = ~percent, 
    type = 'bar', 
    name = 'Seats Taken', 
    text =~paste('Seats Taken: ', enrolled, '</br> Open Seats: ' , open))

p1

Это решает проблему с цветом, которая у меня была, но я озадачен тем, почему передача аргумента цвета в исходном коде не удалась. И почему ОБА сюжеты терпят неудачу в этом случае. Является ли мое исправление идеальным решением для передачи непрерывной переменной в аргумент цвета для гистограммы?

Заранее спасибо!

...