首页 > 解决方案 > 是否可以在 R 包 visNetwork 中以编程方式将网络列表一一导出到 PNG?

问题描述

我尝试了示例代码,visExport()并且能够将“导出为 PNG”按钮添加到闪亮的网页。但这需要用户交互才能按下按钮将网络导出为 PNG 图像文件。

我有数百个网络,并希望将它们分别导出为 PNG 文件。其中一些需要定期更新。因此,如果用户无需为每个网络按下“导出为 PNG”按钮,就能够将它们全部导出为 PNG 文件,这在逻辑上会很好。

那么是否可以以编程方式将网络列表一个一个导出到PNG?这就像visSave()为每个网络一个一个地导出 HTML。

标签: rvisnetwork

解决方案


简短的回答必须是“是”,但由于您没有给我们任何示例代码,因此不可能给您一个经过测试的解决方案。但是你说你有一百个网络。让我们假设在一个向量networks中。(对下面的示例代码稍作更改后,列表也可以使用。)您可以使用闪亮按钮导出一个图形。因此,您必须拥有创建单个网络映像的代码。假设在一个函数createImageForNetwork(x)中,网络在哪里x。您还需要一个函数来为每个图像创建一个输出文件名。假设它被称为getFilename(x). 然后像下面未经测试的代码之类的东西会做你想做的事:

exportNetworkImage <- function(x) {
  png(getFilename(x))
  createImageForNetwork(x)
  dev.off()
}
lapply(1:length(networks), function(x) exportNetworkImage(networks[x]))

如果您想在 Shiny 应用程序中单击一个按钮来执行此操作,那么只需将该代码放入按钮的observeEvent处理程序中。


推荐阅读