将图像插入 gt table
Insert images into gt table
我对如何使用 gt
包中的 text_transform
和 local_image
函数将图像插入数据单元格感到有点困惑
我有一系列大约十几个 .png 文件,其中包含我要插入的图形。它们的名称如 CA.png、UT.png、OH.png 等用于州的缩写。它们都在一个本地文件夹中。
所以给定一个基本的table喜欢
library(gt)
library(magrittr)
Column_one <- c("CA", "UT", "OH")
column_two <- c(NA, NA, NA) #placeholder for graphics
dashboard.data <- data.frame(column_one, column_two, stringsAsFactors = FALSE)
names(dashboard.data)[1] <- "State"
names(dashboard.data)[2] <- "IncidenceGauge"
dboard3 <- dashboard.data %>% gt() %>%
tab_header(
title = md("**Big Title**"),
subtitle = md("*Subtitle*")
) %>%
cols_label(IncidenceGauge = "Risk Level") %>%
print(dboard3)
如何将 png 文件加载到第二列的相应行中?
这可以通过 gt
函数 text_transform
和 local_image
实现,如下所示:
- 当
text_transform
转换列的内容时,将文件名放在第二列中。
- 对于函数参数
.fn
将函数传递给 text_transform
以遍历列元素,通过 local_image
和 returns 字符向量加载和转换图像.
利用 purrr
和 ggplot2
以下代码首先制作一些示例 ggplots 将它们保存为 png,最后将它们添加到您的第二列:
library(gt)
library(magrittr)
library(purrr)
library(ggplot2)
# Let's make some pngs
mtcars %>%
split(.$cyl) %>%
map(~ ggplot(.x, aes(hp, mpg, color = factor(gear))) + geom_point()) %>%
set_names(c("CA", "UT", "OH")) %>%
iwalk(~ ggsave(paste0(.y, ".png"), .x))
column_one <- c("CA", "UT", "OH")
# Put the filenames in the column
column_two <- c("CA", "UT", "OH")
dashboard.data <- data.frame(column_one, column_two, stringsAsFactors = FALSE)
names(dashboard.data)[1] <- "State"
names(dashboard.data)[2] <- "IncidenceGauge"
dboard3 <- dashboard.data %>%
gt() %>%
tab_header(
title = md("**Big Title**"),
subtitle = md("*Subtitle*")
) %>%
text_transform(
locations = cells_body(vars(IncidenceGauge)),
fn = function(x) {
# loop over the elements of the column
map_chr(x, ~ local_image(
filename = paste0(.x, ".png"),
height = 100
))
}) %>%
cols_label(IncidenceGauge = "Risk Level")
print(dboard3)
我对如何使用 gt
包中的 text_transform
和 local_image
函数将图像插入数据单元格感到有点困惑
我有一系列大约十几个 .png 文件,其中包含我要插入的图形。它们的名称如 CA.png、UT.png、OH.png 等用于州的缩写。它们都在一个本地文件夹中。
所以给定一个基本的table喜欢
library(gt)
library(magrittr)
Column_one <- c("CA", "UT", "OH")
column_two <- c(NA, NA, NA) #placeholder for graphics
dashboard.data <- data.frame(column_one, column_two, stringsAsFactors = FALSE)
names(dashboard.data)[1] <- "State"
names(dashboard.data)[2] <- "IncidenceGauge"
dboard3 <- dashboard.data %>% gt() %>%
tab_header(
title = md("**Big Title**"),
subtitle = md("*Subtitle*")
) %>%
cols_label(IncidenceGauge = "Risk Level") %>%
print(dboard3)
如何将 png 文件加载到第二列的相应行中?
这可以通过 gt
函数 text_transform
和 local_image
实现,如下所示:
- 当
text_transform
转换列的内容时,将文件名放在第二列中。 - 对于函数参数
.fn
将函数传递给text_transform
以遍历列元素,通过local_image
和 returns 字符向量加载和转换图像.
利用 purrr
和 ggplot2
以下代码首先制作一些示例 ggplots 将它们保存为 png,最后将它们添加到您的第二列:
library(gt)
library(magrittr)
library(purrr)
library(ggplot2)
# Let's make some pngs
mtcars %>%
split(.$cyl) %>%
map(~ ggplot(.x, aes(hp, mpg, color = factor(gear))) + geom_point()) %>%
set_names(c("CA", "UT", "OH")) %>%
iwalk(~ ggsave(paste0(.y, ".png"), .x))
column_one <- c("CA", "UT", "OH")
# Put the filenames in the column
column_two <- c("CA", "UT", "OH")
dashboard.data <- data.frame(column_one, column_two, stringsAsFactors = FALSE)
names(dashboard.data)[1] <- "State"
names(dashboard.data)[2] <- "IncidenceGauge"
dboard3 <- dashboard.data %>%
gt() %>%
tab_header(
title = md("**Big Title**"),
subtitle = md("*Subtitle*")
) %>%
text_transform(
locations = cells_body(vars(IncidenceGauge)),
fn = function(x) {
# loop over the elements of the column
map_chr(x, ~ local_image(
filename = paste0(.x, ".png"),
height = 100
))
}) %>%
cols_label(IncidenceGauge = "Risk Level")
print(dboard3)