r - 将 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 文件中(而不是使用某种形式的屏幕截图)。挖掘文档我发现 lavaanPlot 返回一个 Diagrammer 对象。我试图用三种不同的方法获得一个 png 文件
方法
1. Webshot
给我错误webshot.js returned failure value: 1
2. export_graph
我在 SO 上找到了一些如何修复此链接的建议,建议使用 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 上有一个分支,其中已经包含此功能。
推荐阅读
- python - .pack() 和 .grid() 的替代品
- json - 替换多个 JSON 文件中对象属性的值
- java - 调用@OAuthSecurity 资源时移动应用程序继续加载
- lotus-notes - Lotusscript:检索电子邮件正文中的图像
- python - Thinc 中 PyTorchLSTM 的问题
- r - 解释管道
- c++ - 为什么我们需要 [dcl.init]/(6.2) 中下面突出显示的句子?
- android - React Native打开失败:将图像保存到相机胶卷后ENOENT(没有这样的文件或目录)
- webpack - 更改 webpack 5 生成的字体
- apache-kafka-connect - Kafka Connect MaskField SMT 在墓碑上失败