在其他变量(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)
我以 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)