是否可以将迷你图与 gt 一起使用?
Is it possible to use sparkline with gt?
我想在 gt
的软件包 table 中使用 sparkline
迷你图表。可能吗?我知道可以使用 formattable
,但我更愿意使用 gt
tables。这是我想要完成的以及如何使用 formattable
.
完成的
library(tidyverse)
library(sparkline)
library(htmlwidgets)
library(formattable)
set.seed(27)
tibble(
name = rep(c("A", "B"), each = 20),
value = runif(40, min = -10, max = 10) %>% cumsum()
) %>%
group_by(name) %>%
summarise(
chart = spk_chr(
value,
type="line")
) %>%
formattable(align=c("l")) %>%
as.htmlwidget() %>%
spk_add_deps()
使用 fmt_markdown
将列视为 HTML。
library(tidyverse)
library(sparkline)
library(gt)
p <- tibble(
name = rep(c("A", "B"), each = 20),
value = runif(40, min = -10, max = 10) %>% cumsum()
) %>%
group_by(name) %>%
summarise(
chart = spk_chr(
value,
type="line")
) %>%
gt() %>%
fmt_markdown(columns = vars(chart))
然后,使用 htmltools::attachDependencies
添加依赖项
p_html <- gt:::as.tags.gt_tbl(p)
p_html <- htmltools::attachDependencies(p_html, htmlwidgets::getDependency("sparkline"))
print(p_html, browse = interactive())
这是一个使用 gtExtras
的解决方案。与 sparkline
不同,gtExtras
图表不是交互式的。
library(tidyverse)
library(gtExtras)
library(gt)
df <- tibble(
name = rep(c("A", "B"), each = 20),
value = runif(40, min = -10, max = 10) %>% cumsum()
)
df %>%
group_by(name) %>%
# for gtExtras' sparkline, a list of values needs to be provided
summarise(chart = list(value), .groups = "drop") %>%
gt() %>%
gt_sparkline(chart)
我想在 gt
的软件包 table 中使用 sparkline
迷你图表。可能吗?我知道可以使用 formattable
,但我更愿意使用 gt
tables。这是我想要完成的以及如何使用 formattable
.
library(tidyverse)
library(sparkline)
library(htmlwidgets)
library(formattable)
set.seed(27)
tibble(
name = rep(c("A", "B"), each = 20),
value = runif(40, min = -10, max = 10) %>% cumsum()
) %>%
group_by(name) %>%
summarise(
chart = spk_chr(
value,
type="line")
) %>%
formattable(align=c("l")) %>%
as.htmlwidget() %>%
spk_add_deps()
使用 fmt_markdown
将列视为 HTML。
library(tidyverse)
library(sparkline)
library(gt)
p <- tibble(
name = rep(c("A", "B"), each = 20),
value = runif(40, min = -10, max = 10) %>% cumsum()
) %>%
group_by(name) %>%
summarise(
chart = spk_chr(
value,
type="line")
) %>%
gt() %>%
fmt_markdown(columns = vars(chart))
然后,使用 htmltools::attachDependencies
p_html <- gt:::as.tags.gt_tbl(p)
p_html <- htmltools::attachDependencies(p_html, htmlwidgets::getDependency("sparkline"))
print(p_html, browse = interactive())
这是一个使用 gtExtras
的解决方案。与 sparkline
不同,gtExtras
图表不是交互式的。
library(tidyverse)
library(gtExtras)
library(gt)
df <- tibble(
name = rep(c("A", "B"), each = 20),
value = runif(40, min = -10, max = 10) %>% cumsum()
)
df %>%
group_by(name) %>%
# for gtExtras' sparkline, a list of values needs to be provided
summarise(chart = list(value), .groups = "drop") %>%
gt() %>%
gt_sparkline(chart)