通过代码保存一张echarts4r图片(再次)
Saving an echarts4r image via code (again)
我之前问过这个问题 here,但它被标记为重复并已关闭。不幸的是,我被指出的答案不起作用....
所以,再一次:
我可以生成像
这样的 eCharts4r 仪表
library(echarts4r)
library(magrittr)
CA_gauge <- e_charts() %>%
e_gauge(4.1,
"INCIDENCE",
min=0,
max=20,
axisLine = list(
linestyle = list(
color=list(
c(1.5/20, "green"),
c(3/20, "yellow"),
c(1, "red")
)
))) %>%
e_title("CA")
print(CA_gauge)
但我还没有找到将输出保存到文件以便稍后在 gt
table 中使用它的好方法。我能找到的最好的方法是将“saveAsImage”添加到输出
e_charts() %>%
e_gauge(4.1,
"INCIDENCE",
min=0,
max=20,
axisLine = list(
linestyle = list(
color=list(
c(1.5/20, "green"),
c(3/20, "yellow"),
c(1, "red")
)
))) %>%
e_toolbox_feature(feature = c("saveAsImage"))
在 RStudio 查看器的右上角添加一个另存为按钮
但我真正想做的只是将代码中的图像(显然没有动画)保存到 tiff/jpg/png 图像文件中。我每周为一个工作项目制作大约一打这样的文件,所以我一直在手动保存文件。但它们很受欢迎,老板想要一个包含 75 个以上的新版本。
我尝试使用像
这样的标准设备
tiff(paste("CA_gauge.tif",sep=""),
res=600, compression = "lzw", height=5, width=15, units="in")
print(CA_gauge)
dev.off()
但这并没有实现...我得到的只是一个全白的 tif 文件。当我的原始线程关闭时,我被指向的 建议使用 htmlwidgets
和 webshot
。按照这个例子,我想出了
CA_gauge <- e_charts() %>%
e_gauge(round(CA_data[[nrow(CA_data), 10]],1),
"CA \nINCIDENCE",
animation = FALSE,
min=0,
max=20,
animation = FALSE,
axisLine = list(
lineStyle = list(
color=list(
c(1.5/20, "green"),
c(3/20, "yellow"),
c(1, "red")
)
)))
htmlwidgets::saveWidget(widget = CA_gauge, file = "~/plot.html")
setwd("~")
webshot::webshot(url = "plot.html",
file = "plot.png")
这会产生两个输出文件:plot.html
和 plot.png
Plot.html
是一大堆 JavaScript 在浏览器中看起来像这样
一切都很好,但是 plot.png
是一个 5kb 的 .png 文件,据我所知是空的....当您尝试打开它时它显示为白屏,就像我尝试使用标准设备所获得的一样。
有什么建议吗?
我在使用 webshot
时遇到了同样的问题,但 webshot2
似乎有效。
webshot2 来自 rstudio 的 github
library(echarts4r)
library(magrittr)
library(webshot2)
library(htmlwidgets)
CA_gauge <- e_charts() %>%
e_gauge(4.1,
"INCIDENCE",
min=0,
max=20,
axisLine = list(
linestyle = list(
color=list(
c(1.5/20, "green"),
c(3/20, "yellow"),
c(1, "red")
)
))) %>%
e_title("CA")
htmlwidgets::saveWidget(widget = CA_gauge, file = "~/ca_gauge.html")
# I had to set this for webshot2 to work on Ubuntu 20.04 LTS
# Sys.setenv(CHROMOTE_CHROME = '/snap/bin/chromium')
# use 'Sys.which("chromium")' to get your path.
webshot('ca_gauge.html', file = 'ca_gauge.png')
文件浏览器中的文件:
输出.png:
我之前问过这个问题 here,但它被标记为重复并已关闭。不幸的是,我被指出的答案不起作用....
所以,再一次:
我可以生成像
这样的 eCharts4r 仪表library(echarts4r)
library(magrittr)
CA_gauge <- e_charts() %>%
e_gauge(4.1,
"INCIDENCE",
min=0,
max=20,
axisLine = list(
linestyle = list(
color=list(
c(1.5/20, "green"),
c(3/20, "yellow"),
c(1, "red")
)
))) %>%
e_title("CA")
print(CA_gauge)
但我还没有找到将输出保存到文件以便稍后在 gt
table 中使用它的好方法。我能找到的最好的方法是将“saveAsImage”添加到输出
e_charts() %>%
e_gauge(4.1,
"INCIDENCE",
min=0,
max=20,
axisLine = list(
linestyle = list(
color=list(
c(1.5/20, "green"),
c(3/20, "yellow"),
c(1, "red")
)
))) %>%
e_toolbox_feature(feature = c("saveAsImage"))
在 RStudio 查看器的右上角添加一个另存为按钮
但我真正想做的只是将代码中的图像(显然没有动画)保存到 tiff/jpg/png 图像文件中。我每周为一个工作项目制作大约一打这样的文件,所以我一直在手动保存文件。但它们很受欢迎,老板想要一个包含 75 个以上的新版本。
我尝试使用像
这样的标准设备tiff(paste("CA_gauge.tif",sep=""),
res=600, compression = "lzw", height=5, width=15, units="in")
print(CA_gauge)
dev.off()
但这并没有实现...我得到的只是一个全白的 tif 文件。当我的原始线程关闭时,我被指向的 htmlwidgets
和 webshot
。按照这个例子,我想出了
CA_gauge <- e_charts() %>%
e_gauge(round(CA_data[[nrow(CA_data), 10]],1),
"CA \nINCIDENCE",
animation = FALSE,
min=0,
max=20,
animation = FALSE,
axisLine = list(
lineStyle = list(
color=list(
c(1.5/20, "green"),
c(3/20, "yellow"),
c(1, "red")
)
)))
htmlwidgets::saveWidget(widget = CA_gauge, file = "~/plot.html")
setwd("~")
webshot::webshot(url = "plot.html",
file = "plot.png")
这会产生两个输出文件:plot.html
和 plot.png
Plot.html
是一大堆 JavaScript 在浏览器中看起来像这样
一切都很好,但是 plot.png
是一个 5kb 的 .png 文件,据我所知是空的....当您尝试打开它时它显示为白屏,就像我尝试使用标准设备所获得的一样。
有什么建议吗?
我在使用 webshot
时遇到了同样的问题,但 webshot2
似乎有效。
webshot2 来自 rstudio 的 github
library(echarts4r)
library(magrittr)
library(webshot2)
library(htmlwidgets)
CA_gauge <- e_charts() %>%
e_gauge(4.1,
"INCIDENCE",
min=0,
max=20,
axisLine = list(
linestyle = list(
color=list(
c(1.5/20, "green"),
c(3/20, "yellow"),
c(1, "red")
)
))) %>%
e_title("CA")
htmlwidgets::saveWidget(widget = CA_gauge, file = "~/ca_gauge.html")
# I had to set this for webshot2 to work on Ubuntu 20.04 LTS
# Sys.setenv(CHROMOTE_CHROME = '/snap/bin/chromium')
# use 'Sys.which("chromium")' to get your path.
webshot('ca_gauge.html', file = 'ca_gauge.png')
文件浏览器中的文件:
输出.png: