如何解决将 DiagrammeR 对象保存到光盘上的 PNG 可重现的示例方法
我正在使用 lavaanPlot-Package 绘制我用 lavaan 创建的路径模型。奇迹般有效。为了方便起见,这里有一个可重现的示例
可重现的示例
library(pacman)
p_unload()
p_load(dplyr,lavaan,webshot,lavaanPlot)
model <- 'mpg ~ cyl + disp + hp
qsec ~ disp + hp + wt'
fit <- sem(model,data = mtcars)
summary(fit)
plot <- lavaanPlot(model = fit,node_options = list(shape = "box",fontname = "Helvetica"),edge_options = list(color = "grey"),coefs = F)
plot
但是我想将结果保存到我光盘上的一个 png 文件中(而不是使用一些 截图形式)。深入研究 docs 我发现 lavaanPlot 返回一个 Diagrammer 对象。 我试图用三种不同的方法获取一个 png 文件
方法
1.网络截图
给我错误 webshot.js returned failure value: 1
2。 export_graph
我在 SO 上找到了一些如何修复它的建议 link,建议使用 DiagrammeR export_graph
。但是,这给了我以下错误:
Fehler: `export_graph()` REASON:
* The graph object is not valid
3. export_svg
此外,我在 github 上找到了这个建议的解决方案,但我也无法开始工作。它为我生成了一个 SVG 文件,但我无法正常打开
# Try 1 using webshot
webshot("Plot_test_webshot.png")
# Try 2 export_graph
plot %>%
export_graph(file_name = "pic.png",file_type = "png")
export_graph(plot,file_name = "pic.png",file_type = "png")
# Try 3 export_svg
plot %>%
export_svg() %>%
charToRaw %>%
rsvg_pdf("./path_to_svg_file.svg")
解决方法
我在软件包维护者的 Github 中找到了解决方案。
发布此内容,希望将来寻找解决方案的任何人都能找到此内容
# Export Function for lavaanPlot Obtained from github
# https://github.com/alishinski/lavaanPlot/blob/export_plots/R/plotExportFunctions.R
save_png <- function(plot,path){
DiagrammeRsvg::export_svg(plot) %>%
charToRaw() %>%
rsvg::rsvg() %>%
png::writePNG(path)
}
同样在 Github 上有一个 branch,其中已经包含此功能。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。