R Shiny中如何修改ggplotly geom_bar悬浮提示为分类与计数格式
解决方案
核心原因是geom_bar默认执行计数统计变换,原始数据集不存在预计算的计数字段,需要用ggplot提供的方法获取统计后的计数值。
修正后的代码如下:
output$plotb <- renderPlotly({ p <- ggplot(data = dataset(), aes(x = .data[[input$bo]])) + geom_bar( fill = 'cornflowerblue', color = "black", aes(text = paste0( "Category: ", .data[[input$bo]], "<br>Count: ", after_stat(count) )) ) + labs( title = sprintf("Bar chart of %s", input$bo), x = input$bo, y = "Frequency" ) + theme_light() ggplotly(p, tooltip = "text") })
关键修改说明
- 把自定义tooltip的
text美学映射移动到geom_bar层:计数值是柱状图统计变换后才生成的变量,放在对应几何图层才能正确取值 - 使用
after_stat(count)引用统计后的计数值:这是ggplot2 v3.3.0及以上版本的标准写法,专门用来调用统计变换生成的内部变量;如果使用的是更早版本的ggplot2,可以替换为..count..兼容 - 用
.data[[input$bo]]引用动态列:符合ggplot2的编程规范,避免在美学映射中重复调用响应式数据集,减少取值不一致的潜在问题
内容的提问来源于stack exchange,提问作者c.jungc
相关产品推荐
相关产品推荐

