标签: crosstalk

如何在 R 中的 Crosstalk() 中的 filter_select() 中设置默认值 - Plotly

我正在开发一个带有基于绘图的交互式图表的 rmarkdown HTML。虽然我可以完成图表中我想要的所有内容,但 crosstalk() 中的 filter_select() 不允许我在其中设置默认值。因此,我的图表在初始加载期间看起来笨拙且糟糕。

通过 R 中的串扰使用选择框在 R 绘图中选择默认值,使用静态 html 不闪亮

上面的讨论有一些输入,但我不知道如何在 crosstalk() 中进行这些编辑,因为我不熟悉 HTML/JavaScript。

r crosstalk

7
推荐指数
1
解决办法
3258
查看次数

在传单中使用套索代替矩形来选择统治范围

我正在尝试使用 R 显示传单地图(我不能使用 Shiny 包)。我使用“DT”、“crosstalk”和“leaflet”包来计算地图中选定数据的列的平均值。在地图中,它仅通过矩形形状来选择点。是否可以通过套索选择?

在此输入图像描述

#R code
library(dplyr)
library(leaflet) 
library(DT)
library(crosstalk)

data_2 <- data.frame(ID=c(1:8),
                 Name1 = c("A", "A", "A", "C", "B", "B", "A", "B"),
                 Name2 = c("a", "b", "b", "a", "b", "a", "b", "c"),
                 Value1 = c(12,43,54,34,23,77,44,22),
                 Value2 = c(6,5,2,7,5,6,4,3),
                 Lat = c(51.1, 51.6, 57.3, 52.4, 56.3, 54.3, 60.4, 49.2),
                 Lon = c(5, -3, -2, -1, 4, 3, -5, 0))

data_2<-data_2 %>%
  mutate(
    lab_DB = case_when(
  Name1 == unique(data_2$Name1)[1]  ~ "blue",
  Name1 == unique(data_2$Name1)[2]  ~ "green",
  Name1 == unique(data_2$Name1)[3]  ~ …
Run Code Online (Sandbox Code Playgroud)

javascript r leaflet crosstalk

6
推荐指数
1
解决办法
1341
查看次数

如何在没有 Shiny 的情况下过滤 Rmarkdown 中的预聚合数据?

原始问题

(请参阅下面的部分解决方案更新。)

我有一个 RMarkdown 文档,它按组总结了有多少记录(行)具有各种属性。我希望能够通过在汇总之前进行过滤来操作表中包含哪些记录。我在下面创建了一个最小但类似的模型。

我想要的是一个交互式复选框,可以有效地“注释或取消注释”

  # filter(weight_class == "Heavy") %>% 
Run Code Online (Sandbox Code Playgroud)

以下。

我知道我可以使用 Shiny 做到这一点,但我需要能够直接与同事共享生成的 HTML 文件(在我的情况下通过共享 Box 文件夹),因此 Shiny 解决方案不可行,至少目前是这样。DT另外,我考虑过使用/的功能datatable,但据我所知,过滤需要在它到达那里之前发生(尽管我愿意被证明我对此是错误的)。

我见过像htmltools、 、之类的包htmlwidgetscrosstalk它们似乎可以促进这一点,但我对它们还不够熟悉,并且似乎无法在网上找到足够接近的示例来根据我的目的进行修改。

实际上,我希望能够过滤多个条件,并希望从过滤后的数据生成多个表格和绘图,但我希望下面的最小示例可以作为一个可行的起点。

我如何添加这样的复选框(或类似的)来创建这种类型的交互性,而不需要求助于 Shiny?

演示 RMarkdown:

---
title: "Table Demo"
output: html_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
library(tidyverse)
library(DT)
```

```{r data}
set.seed(42)
df <- tibble(
  group = sample(paste0("Group ", LETTERS[1:4]), 100, replace = T),
  weight_class = sample(c("Heavy", "Light"), 100, replace = T, prob = c(.3, …
Run Code Online (Sandbox Code Playgroud)

r r-markdown crosstalk reactable

6
推荐指数
1
解决办法
1241
查看次数

如何使用反应式过滤父表和嵌套表中的行?

如何使用特定的行来过滤行Type,这些行位于父表或 a 的任何嵌套表中reactablecrosstalk::filter_checkbox如下所示

dat <- structure(list(Manufacturer = c(
  "Acura", "Acura", "Audi", "Audi",
  "BMW", "Buick", "Buick", "Buick", "Buick", "Cadillac", "Cadillac",
  "Chevrolet", "Chevrolet", "Chevrolet", "Chevrolet", "Chevrolet",
  "Chevrolet", "Chevrolet", "Chevrolet", "Chrysler", "Chrysler",
  "Chrysler", "Dodge", "Dodge", "Dodge", "Dodge", "Dodge", "Dodge",
  "Eagle", "Eagle", "Ford", "Ford", "Ford", "Ford", "Ford", "Ford",
  "Ford", "Ford", "Geo", "Geo", "Honda", "Honda", "Honda", "Hyundai",
  "Hyundai", "Hyundai", "Hyundai", "Infiniti", "Lexus", "Lexus",
  "Lincoln", "Lincoln", "Mazda", "Mazda", "Mazda", "Mazda", "Mazda",
  "Mercedes-Benz", "Mercedes-Benz", "Mercury", "Mercury", "Mitsubishi",
  "Mitsubishi", "Nissan", …
Run Code Online (Sandbox Code Playgroud)

r htmlwidgets crosstalk reactable

5
推荐指数
1
解决办法
906
查看次数

使用按时间范围过滤的共享数据创建交互式条形图

我想创建一个交互式条形图,让用户可以根据一系列值过滤观察结果,然后动态呈现所选时间段内每个类的计数。由于过滤后的数据需要可用于许多这样的图表,我认为串扰plotly/ggplot的组合可能会证明是有价值的。

我在下面附加了一个 reprex,它使用共享数据和来自串扰的过滤功能来允许动态过滤部分。当我编织文档时,只要选择了全部范围的值(默认值),条形图就会很好地呈现。

满的

但是,绘图区域对于任何其他区域都为空,即。用户调整范围。

部分的

我到底错过了什么?我认为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() …
Run Code Online (Sandbox Code Playgroud)

visualization r ggplotly r-plotly crosstalk

5
推荐指数
1
解决办法
889
查看次数

R:当 tidyverse 动词不起作用时,串扰 :: SharedData 链接数据具有不同的格式(宽/长)

编辑TL;DR 使用crosstalk包,我正在寻找一种方法来链接利用长格式数据(线图)的图形与宽格式数据的交互式表格,以便表格中的每一行对应于图中的一条线。

我正在尝试将 DT 表与绘图图链接起来。我的麻烦在于图形需要长格式的数据,而表格需要宽格式。我可能专注于 tidyverse 的做事方式。我将尝试提供一个最小的示例,说明我正在尝试做什么以及我想获得什么。

设置:

library(tidyverse)
library(crosstalk)
library(plotly)
library(DT)

# Wide format
df_test1 <- data.frame(
  id = c("id1", "id2"),
  item1 = c(0, 4),
  item2 = c(3, 2),
  item3 = c(1, 4),
  item4 = c(3, 4),
  item5 = c(1, NA)
)

# Reshaped to long format
df_test2 <- 
  df_test1 %>%
  tidyr::pivot_longer(cols = item1:item5, names_to = "item", values_to = "value") %>%
  dplyr::mutate(item = as.factor(item)) %>%
  dplyr::mutate(value = factor(as.character(value), levels = c("0", "1", "2", "3", "4")))
Run Code Online (Sandbox Code Playgroud)

我试过的: …

r plotly dt tidyverse crosstalk

5
推荐指数
1
解决办法
249
查看次数

如何根据串扰条件动态更改绘图轴

这个问题之前已经被问过,但由于没有reprex而没有得到答案,所以让我试一下。

假设我有两个跨越不同日期范围的数据集。我想使用滑块控制每个的可视化。以下 reprex 将直接在下面创建视觉效果。

---
title: "Untitled"
output: html_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)

#+ message = FALSE, warning = FALSE
library(plotly)
library(crosstalk)
library(dplyr)
#+
```

```{r}
df1 <- data.frame(d = seq.Date(from = as.Date("2020-01-01"), by = "months", length.out = 100), v = runif(100))
df2 <- data.frame(d = seq.Date(from = as.Date("2020-6-01"), by = "months", length.out = 20), other_v = runif(20))

both_df <- full_join(df1, df2, by = 'd')

both_df_sh <- both_df %>% SharedData$new(group = "boom")

selector <- filter_slider(id …
Run Code Online (Sandbox Code Playgroud)

r plotly r-plotly crosstalk

5
推荐指数
1
解决办法
1941
查看次数

字符串中的“与”符号 (&amp;) 变为“&amp;” 在串扰filter_select()函数中

我在使用可反应表的 r闪亮应用程序的串扰 filter_select() 函数中使用 NFL 体育场名称。然而,当我选择“M&T Bank Stadium”时,它显示为“M&[amp;]T Bank Stadium”(我添加了括号,以便您看到它的样子)。有没有办法让串扰过滤器选择显示“M&T 银行体育场”而不是“M&[amp;]T 银行体育场”?

我在下面做了一个快速 MRE

library(reactable)
library(tidyverse)
library(crosstalk)
library(shiny)

df <- tibble(points = c(10, 12, 14), 
             stadium = c("M&T Bank Stadium", "Wembley Stadium", "FirstBank Stadium"))

df_crosstalk <- SharedData$new(df)

df_react <- 
  reactable(df_crosstalk)

ui <- fluidPage(
  titlePanel("Test Ampersand"),
  fluidRow(
    column(
      4,
      filter_select(
        id = "stadium",
        label = "Stadium",
        sharedData = df_crosstalk,
        group = ~`stadium`)
      ),
    column(
      8,
      df_react
    )
  )
)

server <- function(input, output, session) {
  output$table <- renderReactable({
    df_react
  })
} …
Run Code Online (Sandbox Code Playgroud)

r shiny crosstalk reactable

5
推荐指数
1
解决办法
199
查看次数

R 中具有串扰和传单的响应式热图

我想使用 R 中的串扰制作包含点的地图和响应式热图。如下所示:

library(crosstalk)
library(leaflet)
library(DT)

# Wrap data frame in SharedData
sd <- SharedData$new(quakes[sample(nrow(quakes), 10),])

bscols(
  # Create a filter input
  filter_slider("mag", "Magnitude", sd, column=~mag, step=0.1, width=250),
  leaflet(sd) %>% addTiles() %>% addMarkers() %>% addHeatmap())
)
Run Code Online (Sandbox Code Playgroud)

但是,运行代码后可以观察到,这种方式在过滤时并没有得到热图的响应效果

怎样才能达到效果呢?

r leaflet crosstalk

1
推荐指数
1
解决办法
1064
查看次数