在其他变量(ggplot2 和 plotly)上带有过滤器(按钮)的交互式直方图

Interactive histogram with a filter (button) on some other variable (ggplot2 and plotly)

我以 mtcars 数据集为例。

library(tidyverse)
library(plotly)

plot <- mtcars %>% 
  ggplot() + 
  geom_histogram(aes(mpg), binwidth = 3) 

ggplotly(plot)

我想做的是有一个过滤器,例如am 变量,这样我就可以很容易地更新图表,所以图表只显示相同的直方图 但仅适用于 am==1 等。所以我想要图表上的按钮,以便制作过滤器。

@David 我认为@marco 在代码中使用触发器的意思是这样的:

 plot <- mtcars %>% 
  filter(am == 1) %>% 
  ggplot() + 
  geom_histogram(aes(mpg), binwidth = 3) +
  facet_wrap(~cyl) 

您可以只提供一个简单的 dplyr:filter,然后再开始创建情节,但这不会给您按钮。

这是否解决了您的问题?

嗯,这很有效:

library(plotly)
mtcars %>% 
  plot_ly(x = ~mpg ) %>%
  add_histogram(frame=~am)

“框架”创建一个滑块...

这里是 shiny 的解决方案:

library(shiny)

ui <- fluidPage(
  checkboxGroupInput("cols", label = "Columns", choices = unique(mtcars$cyl), selected = unique(mtcars$cyl)[1] ),
  plotOutput("plot")
)
server <- function(input, output, session) {
  
  output$plot <- renderPlot({
    data <- mtcars
    data <- data[data$cyl %in% input$cols,]
    hist(data$mpg)
  })
  

}
shinyApp(ui, server)