r - 根据计数更改 ggplotly geom_bar 中的悬停文本
问题描述
所以我正在使用 R Shiny 制作一个网络应用程序。我想用 ggplotly 显示条形图,这里是输出。我想将 hovertext 更改为 Category: ... Count: ..
我尝试了下面的代码,但我不知道如何调用计数的值。我试过打电话给计数,频率。但它不起作用。知道如何解决这个问题吗?
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")
})
解决方案
实现所需结果的一种选择是通过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)
推荐阅读
- firebase - 在 Firebase 中向同一项目下的多个应用发送推送通知
- php - 本地和远程网站之间的通信
- ruby - 如何将所有文件和子文件夹从一个文件夹复制到 Ruby 中同一 AWS S3 存储桶中的另一个文件夹
- android - Android ViewModel 如何确保它必须绑定相同的 Activity 或 Fragment(在屏幕旋转的情况下)?
- javascript - Prebid.js - 一个接一个地运行多个拍卖
- windows - 在 Windows Cygwin 中使用 XARGS 执行多个命令
- java - Java替换/改进空检查
- c++ - 对成员变量使用 std::enable_if 或类似方法
- javascript - 没有空的对象的函数属性
- r - 'utils' 的 loadNamespace() 中的 onLoad 失败,详细信息