在R中向数据表添加图片

10

我正在尝试使用DT软件包在R中向数据表添加图像。我发现了这个问题:如何在使用DT、R和Shiny时将图像嵌入到表格单元格中,它可以用于在线图片。但是当我尝试添加本地图像(使用R创建)时,它就无法显示。这是我的问题示例:

x = rnorm(1000)   
png(paste0("Graficas/test.png"))
Plot = plot(x, type = "l")
dev.off()
camino = '<img src="Graficas/test.png" height="30"></img>'
data = data.frame(0.5,camino)
datatable(data, escape = FALSE)

输出结果为输入图像说明

我不明白为什么会发生这种情况。

1个回答

13

这是一种方法(通过嵌入base64编码的图像并将其用作src)。

首先,我们将制作一个小助手:

img_uri <- function(x) { sprintf('<img src="%s"/>', knitr::image_uri(x)) }

这将使我们可以创建一个数据URI。我们正在读取整个文件并将其转换为base64,然后进行一些格式化操作,最后将整个blob插入到src属性中。

以下是一个以这种方式编码的1x1像素PNG图像:

<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEX/TQBcNTh/AAAAAXRSTlPM0jRW/QAAAApJREFUeJxjYgAAAAYAAzY3fKgAAAAASUVORK5CYII=\"/>

所以,我们只需对您创建的那个执行相同的操作:

x = rnorm(1000)   
png(paste0("test.png"))
Plot = plot(x, type = "l")
dev.off()

camino = img_uri("test.png")
data = data.frame(0.5 ,camino)
DT::datatable(data, escape = FALSE)

你的问题出在它不是“URI”,因此无法从本地系统中获取。在浏览器上下文中使用 file://… URL 可能会起作用。


1
它有效,谢谢。但是你能解释一下img_uir是什么吗? - Alejandro Andrade

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接