#r #shiny #geom-bar #ggplotly
Вопрос:
Поэтому я создаю веб-приложение, используя R Shiny. Я хочу показать гистограмму с ggplotly, вот результат. Я хочу изменить ховертекст на категорию: … Подсчет: ..
Я пытался, как в приведенном ниже коде, но я не знаю, как назвать значение подсчета. Я пытался вызвать счетчик, частоту. Но это не работает. Есть идеи, как это исправить?
output$plotb <- renderPlotly({
ggplotly(ggplot(data=dataset(),aes(x=dataset()[[input$bo]],
text=paste("Category: ", dataset()[[input$bo]],
"<br>Count: ")))
geom_bar(fill='cornflowerblue',color="black")
labs(title=sprintf("Bar chart of %s",input$bo),
x=input$bo,y="Frequency")
theme_light(),tooltip="text")
})
Ответ №1:
Одним из вариантов достижения желаемого результата может быть использование ggplot2::after_stat
, которое позволяет вам получить доступ к значениям, вычисляемым с помощью статистики, например, в случае geom_bar
, если уровень статистики по умолчанию stat="count"
равен . К сожалению, для этого требуется дополнительная работа по получению меток категорий. С этой целью я добавил в свой пример код, который преобразует входную переменную в фактор и возвращает уровни фактора. categories()
Это позволяет добавлять метки категорий внутри after_stat
с помощью categories()[x]
:
Поскольку вы не предоставили никаких данных, я использовал ggplot2::mpg
их в качестве примера:
library(shiny)
library(plotly)
ui <- fluidPage(
plotlyOutput("plotb")
)
server <- function(input, output, session) {
input <- list(bo = "class")
dataset <- reactive({ mpg })
categories <- reactive({ levels(factor(dataset()[[input$bo]])) })
output$plotb <- renderPlotly({
ggplot(data = dataset(), aes(
x = .data[[input$bo]],
text = after_stat(paste(
"Category: ", categories()[x],
"<br>Count: ", count
))
))
geom_bar(fill = "cornflowerblue", color = "black")
labs(
title = sprintf("Bar chart of %s", input$bo),
x = input$bo, y = "Frequency"
)
theme_light()
ggplotly(tooltip = "text")
})
}
shinyApp(ui, server)