【问题标题】:Adding an image to a datatable in R将图像添加到 R 中的数据表
【发布时间】:2018-05-28 00:37:12
【问题描述】:

我正在尝试将图像添加到 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)

输出为

我不明白为什么会这样

【问题讨论】:

    标签: r datatable dt


    【解决方案1】:

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

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

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

    这将让我们创建一个data uri。在将整个 blob 粘贴到 src 属性之前,我们将整个文件转换为 base64,然后进行更多格式化。

    这是 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 的浏览器上下文中工作。

    【讨论】:

    • 谢谢,但你能解释一下 img_uir 的作用吗?
    猜你喜欢
    • 2012-07-04
    • 2023-04-11
    • 2011-06-03
    • 1970-01-01
    • 2013-07-10
    • 2020-02-12
    • 1970-01-01
    • 1970-01-01
    • 2018-12-02
    相关资源
    最近更新 更多