Есть ли способ добавить легенду рядом с меткой в R, не совсем на графике?
Я построил график, используя dygraph
функция из пакета R графов. Интересно, есть ли способ поставить легенду рядом с сюжетом, не совсем так, как это делается по умолчанию...
Код для воспроизведения этого рисунка ниже:
library(archivist)
library(dplyr)
library(devtools)
devtools::install_github("rstudio/dygraphs")
library(dygraphs)
seriesReactive <- loadFromGithubRepo( "db914a43536d4d3f00cf3df8bf236b4a", user= "MarcinKosinski", repo="Museum", value = TRUE)
dygraph(seriesReactive, main = "Dzienna proporcja kliknięć do odsłon dla danych struktur", ylab = "Proporcja") %>%
dyRangeSelector()
1 ответ
Да читаю ?dygraphs::dyLegend
, Описание labelsDiv
аргумент говорит:
Показывать метки данных во внешнем div, а не на графике. Это значение должно быть идентификатором элемента div.
Конечно, это легко сделать в блестящем контексте, но не в rstudio.
Например, в Shiny ui.R
файл, я добавил эту строку:
box(title = "Legend", textOutput("legendDivID"))
Который создает HTML <div>
тег с идентификатором legendDivID
, Затем в блестящий server.R
файл, я использую тот же идентификатор в параметрах dygraphs:
dygraph(...) %>% dyLegend(labelsDiv = "legendDivID")
И это работает как шарм.
В вашем случае вот результат:
И код (просто создать app.R
Сценарий в RStudio и запустить его, позвонив shiny::runApp()
):
## app.R ##
library(shinydashboard)
library(shiny)
library(dygraphs)
ui <- dashboardPage(
dashboardHeader(title = "Page title"),
dashboardSidebar(sidebarMenu(menuItem("tab title", tabName = "tab", icon = icon("globe")))),
dashboardBody(
tabItems(
tabItem(tabName = "tab",
fluidRow(
box(dygraphOutput("graph"), width=9),
box(textOutput("legendDivID"), title = "Legend", collapsible = TRUE, width=3)
)
)
)
)
)
server <- function(input, output) {
library(archivist)
library(dplyr)
seriesReactive <- loadFromGithubRepo( "db914a43536d4d3f00cf3df8bf236b4a", user= "MarcinKosinski", repo="Museum", value = TRUE)
output$graph <- renderDygraph({
withProgress(message = "Loading...", {
dygraph(seriesReactive, main = "Dzienna proporcja kliknięć do odsłon dla danych struktur", ylab = "Proporcja") %>%
dyRangeSelector() %>%
dyLegend(labelsDiv = "legendDivID")
})
})
}
shinyApp(ui, server)