【问题标题】:Saving an echarts4r image via code (again)通过代码保存 echarts4r 图像(再次)
【发布时间】:2021-01-29 04:49:57
【问题描述】:

我之前问过这个问题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 表中使用它。我能找到的最好的方法是将“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 文件。当我的原始线程关闭时,我被指向的answer 建议使用htmlwidgetswebshot。按照那个例子我想出了

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

Plot.html 是一大堆 JavaScript,在浏览器中看起来像这样

这一切都很好,但是plot.png 是一个 5kb 的 .png 文件,据我所知,它是空的....当您尝试打开它时,它显示为白屏,就像什么我尝试使用标准设备。

有什么建议吗?

【问题讨论】:

    标签: r echarts4r


    【解决方案1】:

    我在使用 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:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多