繁体   English   中英

在 R Shiny 应用程序中更改 GGPLOTLY 图形交互

[英]Changing GGPLOTLY graphs interaction in R Shiny App

我希望我的 shiny 应用程序中的图表在我用鼠标 hover 时更改颜色(或突出显示)。 我还希望他们仅 output 我的图形计数,而不是计数和 x 值。

这是我的 Shiny 应用程序中的样子: 在此处输入图像描述

需要明确的是,我希望我悬停的栏变成浅蓝色(或有黑色轮廓)并且只说“计数:61735”而不说“fat_infreq(种族):黑色”。

下面,我附上了一个可重现的例子:

library(shiny)
library(ggplot2)
library(plotly)
library(data.table)
library(shinythemes)
library(forcats)
require(stringi)
require(stringr)
library(scales)
library(ggthemes)
library(plyr)
library(dplyr)
library(readr)
library(tidyr)
library(ggthemes)
library(forcats)
library(xtable)
library(googledrive)
library(googlesheets4)
library(gridExtra)
library(lubridate)
library(DT)
library(vroom)
library(utf8)
library(tableHTML)
library(bslib)
library(devtools)
library(readr)
library(RColorBrewer)

ethnicity <- c("Hispanic", "Non-hispanic","Hispanic","Hispanic","Hispanic","Hispanic","White","White","White","White", 
               "White","Hispanic","Hispanic", "Hispanic","Hispanic","Hispanic","White","White","White","White")
filtered_data <- data.frame(ethnicity)

ui <- fluidPage(

    
    titlePanel("Example"),
        mainPanel(
            plotlyOutput("ethnicity_barplot")
        )
    )

server <- function(input, output) {

    output$ethnicity_barplot <- renderPlotly({
        ggplotly({
            ethnicity_barplot <-ggplot(data = filtered_data, aes(x = fct_infreq(ethnicity))) + 
                geom_bar() + 
                xlab("Ethnicity") + 
                ylab("Number of People") + 
                labs(title = "Ethnicity of Defendants in New York State Courts") + 
                geom_bar(fill = "#327EC2") + 
                theme(panel.background = element_rect(fill = 'white'))+
                theme(plot.background = element_rect(fill = 'white'))+
                theme(plot.title = element_text(hjust = 0.5))+
                theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
                geom_text(stat='count', aes(label=..count..), vjust = -.3)
            
            ethnicity_barplot
        })
    })
}

# Run the application 
shinyApp(ui = ui, server = server)

(不是所有的包都需要,只是不记得那些包了)

library(tidyverse)
library(shiny)
library(plotly)

ethnicity <- c(
  "Hispanic", "Non-hispanic", "Hispanic", "Hispanic", "Hispanic", "Hispanic", "White", "White", "White", "White",
  "White", "Hispanic", "Hispanic", "Hispanic", "Hispanic", "Hispanic", "White", "White", "White", "White"
)
filtered_data <- data.frame(ethnicity)

ui <- fluidPage(
  titlePanel("Example"),
  mainPanel(
    plotlyOutput("ethnicity_barplot")
  )
)

server <- function(input, output) {
  output$ethnicity_barplot <- renderPlotly({
    ggplotly(
      p = {
        ethnicity_barplot <- ggplot(data = filtered_data, aes(x = fct_infreq(ethnicity))) +
          geom_bar() +
          xlab("Ethnicity") +
          ylab("Number of People") +
          labs(title = "Ethnicity of Defendants in New York State Courts") +
          geom_bar(fill = "#327EC2") +
          theme(panel.background = element_rect(fill = "white")) +
          theme(plot.background = element_rect(fill = "white")) +
          theme(plot.title = element_text(hjust = 0.5)) +
          theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
          geom_text(stat = "count", aes(label = ..count..), vjust = -.3)

        ethnicity_barplot
      },
      # only show the y values (counts) as tooltips
      tooltip = "y"
    ) %>%
      # highlight current label
      layout(hoverlabel = list(bgcolor = "orange"), hoveron = list(bgcolor = "red"))
  })
}

# Run the application
shinyApp(ui = ui, server = server)

暂无
暂无

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

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