繁体   English   中英

根据计数更改 ggplotly geom_bar 中的悬停文本

[英]Change the hover text in ggplotly geom_bar according the count

所以我正在使用 R Shiny 制作一个网络应用程序。 我想用 ggplotly 显示一个条形图,这里是输出 我想将悬停文本更改为 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 ,它允许您访问由 stat 计算的值,例如在geom_bar的情况下,默认的 stats 层是stat="count" 不幸的是,这样做需要一些额外的工作来获取类别的标签。 为此,我在示例代码中添加了一个反应categories() ,它将输入变量转换为因子并返回因子的级别。 这样做允许通过 category categories()[x]after_stat添加类别标签:

由于您没有提供数据,我使用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)

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM