【问题标题】:Exporting PNG files from Plotly in R从 R 中的 Plotly 导出 PNG 文件
【发布时间】:2016-03-01 18:55:46
【问题描述】:

如何使用代码将 Plotly 图表导出为 R 中的图像? (不使用图表上的导出按钮)。

例如,来自 Plotly 网站的这段代码,创建这个图表:

library(plotly)
set.seed(100)
d <- diamonds[sample(nrow(diamonds), 1000), ]
plot_ly(d, x = carat, y = price, text = paste("Clarity: ", clarity),
        mode = "markers", color = carat, size = carat)

如何将其保存为图像?

官网在python中有this material,但是我在R中没有找到类似的东西。

【问题讨论】:

  • 只是备注:您似乎通过点大小、颜色和 x 轴上的位置来可视化克拉。这是多余的,可能会产生误导。

标签: r plotly


【解决方案1】:

根据情节,以下应该有效:

1) 按照此处所述安装 Orca:https://github.com/plotly/orca

2) 您可能需要重新启动电脑

然后运行以下代码:

有一个导出功能,可让您保存图像而无需连接到 plotly 服务器。您可以在 plotly 包文档中找到它:

p <- plot_ly(...)
orca(p, file = "image.png")

注意:我发现提供完整路径会引发 javascript 错误。所以我只给了文件名。文件保存在 Windows 中的"C:/Users/user/Documents" 中。

【讨论】:

    【解决方案2】:

    由于我是新人,因此无法发表评论,因此我将其发布为回复。自 plotly v4.9.0 起,export 函数已被弃用。相反,orca 函数是将绘图对象导出为静态图像的建议方法。在此处了解更多信息:orca function R documentation

    【讨论】:

      【解决方案3】:

      有一个export 功能可以让您保存图像而无需连接到plotly 服务器。你可以在plotly package doc找到它:

      p <- plot_ly(...)
      export(p, file = "image.png")
      

      您甚至可以通过将扩展名选择为.pngjpeg.pdf 来更改输出的文件类型。

      您还可以将图像保存在html 文件中,这样您就可以使用htmlwidgets::saveWidget 进行缩放或显示注释等plotly 体验:

      p <- plot_ly(...)
      htmlwidgets::saveWidget(p, file = "image.html")
      

      【讨论】:

      • export 也依赖于 phantomjs,我希望它和 ggplot2 一样,比如 chartvar
      • 现在可以使用orca,不依赖phantomjs。用法同export:orca(p, file = "image.png")。有关详细信息,请参阅github.com/plotly/orca
      【解决方案4】:

      Plotly docs in CRAN 中我发现了函数plotly_IMAGE

      这是一个例子:

      set.seed(100)
      d <- diamonds[sample(nrow(diamonds), 1000), ]
      p <- plot_ly(d, x = carat, y = price, text = paste("Clarity: ", clarity),
              mode = "markers", color = carat, size = carat)
      
      plotly_IMAGE(p, width = 500, height = 500, format = "png", scale = 2,
                   out_file = "~/desktop/test.png")
      

      更新

      plotly_IMAGE 使用 Plotly 服务器工作。欢迎使用本地解决方案。

      【讨论】:

      • 我在使用plotly_IMAGE 时遇到以下错误,如上所示:Error in process.image(append_class(resp, "image")) : Unauthorized (HTTP 401). 我该怎么办?
      • @joni 你需要互联网连接。
      • 好的,解决了问题:我必须通过Sys.setenv("plotly_username"="your_plotly_username") Sys.setenv("plotly_api_key"="your_api_key") 设置我的身份验证凭据 API 密钥 可以在个人资料设置HERE 中找到。
      • 有本地解决方案,检查我的分析器。
      猜你喜欢
      • 2016-03-04
      • 1970-01-01
      • 2019-04-10
      • 2016-03-11
      • 1970-01-01
      • 1970-01-01
      • 2016-12-22
      • 2019-03-25
      • 1970-01-01
      相关资源
      最近更新 更多