将图像添加到R中的数据表

时间:2017-12-14 01:28:22

标签: r datatable dt

我正在尝试将图像添加到R DT包中的数据表中。我想问这个问题:How to embed an image in a cell a table using DT, R and 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)

输出为enter image description here

我无法理解为什么会发生

1 个答案:

答案 0 :(得分:5)

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

首先我们要做一个小帮手:

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

这将让我们成为data 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)

您的问题是b / c它不是“URI”,它无法从本地系统中提取。它可能在浏览器上下文中使用file://… URL。