R 将徽标/图像添加到数据表的侧面
我已经寻找了一种方法来创建一个带有徽标/图像的表,作为数据表的一列。我附上了我想要的那种桌子的图片。数据表取自使用R 将徽标/图像添加到数据表的侧面,r,formattable,R,Formattable,我已经寻找了一种方法来创建一个带有徽标/图像的表,作为数据表的一列。我附上了我想要的那种桌子的图片。数据表取自使用库(formattable)的示例,我在“id”列顶部粘贴了徽标,以显示我正在寻找的设计类型。理想情况下,这将是整洁和可定制的(可能整个桌子背景为黑色,白色/灰色书写等)。有人可以分享任何示例吗 创建不带徽标的formattable表的代码: df <- data.frame( id = 1:10, name = c("Bob", "Ashley", "James",
库(formattable)
的示例,我在“id”列顶部粘贴了徽标,以显示我正在寻找的设计类型。理想情况下,这将是整洁和可定制的(可能整个桌子背景为黑色,白色/灰色书写等)。有人可以分享任何示例吗
创建不带徽标的formattable表的代码:
df <- data.frame(
id = 1:10,
name = c("Bob", "Ashley", "James", "David", "Jenny",
"Hans", "Leo", "John", "Emily", "Lee"),
age = c(28, 27, 30, 28, 29, 29, 27, 27, 31, 30),
grade = c("C", "A", "A", "C", "B", "B", "B", "A", "C", "C"),
test1_score = c(8.9, 9.5, 9.6, 8.9, 9.1, 9.3, 9.3, 9.9, 8.5, 8.6),
test2_score = c(9.1, 9.1, 9.2, 9.1, 8.9, 8.5, 9.2, 9.3, 9.1, 8.8),
final_score = c(9, 9.3, 9.4, 9, 9, 8.9, 9.25, 9.6, 8.8, 8.7),
registered = c(TRUE, FALSE, TRUE, FALSE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE),
stringsAsFactors = FALSE)
formattable(df, list(
age = color_tile("white", "orange"),
grade = formatter("span", style = x ~ ifelse(x == "A",
style(color = "green", font.weight = "bold"), NA)),
area(col = c(test1_score, test2_score)) ~ normalize_bar("pink", 0.2),
final_score = formatter("span",
style = x ~ style(color = ifelse(rank(-x) <= 3, "green", "gray")),
x ~ sprintf("%.2f (rank: %02d)", x, rank(-x))),
registered = formatter("span",
style = x ~ style(color = ifelse(x, "green", "red")),
x ~ icontext(ifelse(x, "ok", "remove"), ifelse(x, "Yes", "No")))
))
df您可以构造自己的列处理程序。例如
library(tidyverse)
library(formattable)
image_tile <- formatter("img",
src = x ~ ifelse(x == "test", "path/to/image", "path/to/image"),
NA)
formattable(df, list(id = image_tile))
请提供一个带有样本数据和图像的可复制示例。我添加了代码以生成没有徽标的示例。为此,我能够生成与上面相同的示例,但即使“路径/到/图像”如果有正确的PNG图像,我仍然只能生成蓝色框中的“?”。还有什么我需要做的吗?好的,我换了一个web路径,它工作了,但是本地路径没有。可以使用本地文件路径吗?还有,有没有办法自定义大小?非常感谢这个提示,因为这是向前迈出的一大步。@DataVis我更新了帖子,添加了如何控制宽度
,高度
,以及如何直接在HTML中嵌入图像。
library(base64enc)
image1 <- sprintf("data:image/png;base64,%s", base64encode("image-1.png"))
image2 <- sprintf("data:image/png;base64,%s", base64encode("image-2.png"))
image_tile <- formatter("img",
src = x ~ ifelse(x > 5, image1, image2),
# Control height and width, either directly -
width = 50,
# Or via a formula
height = x ~ ifelse(x > 5, 10, 50),
NA)
formattable(df, list(id = image_tile))