Добавление изображения в таблицу данных в 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.