Добавление изображения в таблицу данных в R

Я пытаюсь добавить изображение в Datatable в форме R DT пакет. Я задаю этот вопрос: как вставить изображение в ячейку таблицы, используя 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 ответ

Решение

Это один из способов сделать это (встраивая изображения в кодировке base64 и используя его для src).

Сначала мы сделаем маленький помощник:

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

Это позволит нам сделать данные URI. Мы крадем весь файл и конвертируем его в base64, затем делаем немного больше форматирования, прежде чем вставить весь большой двоичный объект в src приписывать.

Вот как выглядит PNG размером 1x1 пикселей:

<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.

Другие вопросы по тегам