R 使用按时间范围筛选的共享数据创建交互式条形图
我想创建一个交互式条形图,使用户可以根据一系列值筛选观察结果,然后动态呈现选定时间段内每个类的计数。由于过滤后的数据需要可用于许多这样的图形,我认为串扰和plotly/ggplot的组合可能很有价值 我在下面附加了一个reprex,它使用共享数据和来自串扰的过滤功能来支持动态过滤部分。当我编织文档时,只要选择了完整的值范围(默认值),条形图就会很好地呈现 但是,打印区域对于任何其他区域(即用户调整的范围)变为空 我到底错过了什么?我假设完整共享数据集和过滤共享数据集之间肯定存在差异,R 使用按时间范围筛选的共享数据创建交互式条形图,r,visualization,r-plotly,ggplotly,crosstalk,R,Visualization,R Plotly,Ggplotly,Crosstalk,我想创建一个交互式条形图,使用户可以根据一系列值筛选观察结果,然后动态呈现选定时间段内每个类的计数。由于过滤后的数据需要可用于许多这样的图形,我认为串扰和plotly/ggplot的组合可能很有价值 我在下面附加了一个reprex,它使用共享数据和来自串扰的过滤功能来支持动态过滤部分。当我编织文档时,只要选择了完整的值范围(默认值),条形图就会很好地呈现 但是,打印区域对于任何其他区域(即用户调整的范围)变为空 我到底错过了什么?我假设完整共享数据集和过滤共享数据集之间肯定存在差异,ggpl
ggplotly()
无法处理这些数据集。有没有其他方法可以让我实现我的目标
以下是我的.Rmd文件的内容:
---
title: mpg class counts filtered by time period
output: html_document
---
```{r echo = FALSE, message = FALSE, warning = FALSE}
library(crosstalk)
library(plotly)
# Wrap data frame in SharedData
sd = SharedData$new(mpg)
# Create a filter input
filter_slider("Year", "Year", sd, column = ~ year, step = 1, width = 250)
# Render graph
bscols(
ggplotly(
ggplot(aes(x = class), data = sd) +
geom_bar()
)
)
```
我认为这可能是因为“Crosstalk目前只适用于显示单个数据点的视图的链接刷新和过滤,而不是聚合视图或摘要视图(其中“观察”定义为数据帧中的一行)。例如,不支持直方图,因为每个条形图表示多个数据点;但散点图点表示单个数据点,因此支持它们。” 如果您将其更改为点绘图,它似乎正在工作
---
title: mpg class counts filtered by time period
output: html_document
---
```{r echo = FALSE, message = FALSE, warning = FALSE}
library(data.table)
library(crosstalk)
library(plotly)
# Wrap data frame in SharedData
sd = SharedData$new(mpg)
# Create a filter input
filter_slider("Year", "Year", sd, column = ~ year, step = 1, width = 250)
# Render graph
bscols(
ggplotly(
ggplot(aes(hwy, cty), data = sd) +
geom_point()
)
)
```
以下内容对你有用吗?如果要筛选日期,可能需要查看
plotly::rangeslider
library(tidyverse)
library(plotly)
df <- crosstalk::SharedData$new(mpg)$data() %>%
group_by(year, class) %>%
count() %>%
mutate(year = as.factor(year))
df %>%
plot_ly(x = ~class, y = ~n, color = ~year) %>%
add_bars() %>%
layout(barmode = "stack")
库(tidyverse)
图书馆(绘本)
df%
按(年份、类别)分组%>%
计数()%>%
突变(年=作为系数(年))
df%>%
绘图(x=~类,y=~n,颜色=~年)%>%
添加_条()%>%
布局(barmode=“stack”)
感谢分享您的想法。但是为什么它会在整个时间段内都有效呢?毕竟,默认视图中的条已经是数据集的抽象。我已经添加了对代码的修改以支持我的声明。至于为什么它在整个时间段都有效,我不知道,很抱歉。是的,这就是我对散点图中原始数据点的期望。我更感兴趣的是为什么摘要视图(如条形图)是针对完整数据而不是过滤数据生成的。再次感谢您的努力。在我的实际使用案例中,我处理的是长时间的日常观察,因此手动取消选择日期似乎不可行。就我所忽略的RangeSlaider
而言,我认为它不允许永久地对输入数据进行子集划分。如前所述,之后会有很多数据都取决于过滤后的数据。因此,最好使用SharedData
或类似的解决方案。