R/graphics:在函数中绘制为 PNG
Posted
技术标签:
【中文标题】R/graphics:在函数中绘制为 PNG【英文标题】:R/graphics: Plotting to PNG in function 【发布时间】:2021-12-11 16:06:19 【问题描述】:我想使用一个函数让cowplot::plot_grid()
直接写入PNG。我可以通过脚本使它工作:
g <- ggplot2::ggplot(datasets::iris, ggplot2::aes(x = Sepal.Length, y= Sepal.Width)) + ggplot2::geom_point()
grDevices::png(filename = "mypic1.png", width = 1000, height = 1000, units = "px", bg = "transparent")
cowplot::plot_grid(g)
grDevices::dev.off()
但是,如果我在一个函数中尝试这个,它不起作用:
pxPrint <- function(ggobject, fn, x = 1000, y = 1000)
grDevices::png(filename = fn, width = x, height = y, units = "px", bg = "transparent")
cowplot::plot_grid(ggobject)
grDevices::dev.off()
pxPrint(ggobject = g, fn = "mypic2.png")
这会产生与脚本相同的消息...
RStudioGD
2
...但没有创建文件 mypic2.png。
假设这可能与文件位置有关,我在默认 WD 中的 RStudio 项目之外尝试了相同的代码。同样,mypic1.png 是在标准目录中创建的,但不是 mypic2。但显示的消息不同(在两种情况下):
null device
1
我错过了什么?
【问题讨论】:
我想你只是想要save_plot
,比如cowplot::save_plot("mypic1.png", plot = plot_grid(g))
?
虽然这不是答案,但它是一个更好的解决方案,太棒了!
【参考方案1】:
请告诉我这是您所期待的。
g <- ggplot2::ggplot(datasets::iris, ggplot2::aes(x = Sepal.Length, y= Sepal.Width)) + ggplot2::geom_point()
pxPrint <- function(ggobject, fn, x = 1000, y = 1000)
grDevices::png(filename = fn, width = x, height = y, units = "px", bg = "transparent")
print((cowplot::plot_grid(ggobject)))
grDevices::dev.off()
pxPrint(ggobject = g, fn = "mypic2.png")
原因:在您自己的函数中,您需要一个明确的print()
语句。
【讨论】:
以上是关于R/graphics:在函数中绘制为 PNG的主要内容,如果未能解决你的问题,请参考以下文章
R语言使用pROC包绘制ROC曲线实战:roc函数计算AUC值plot.roc函数绘制ROC曲线添加置信区间为回归模型中的每个因子绘制ROC曲线并在同一个图中显示出来
在 QGraphicsWidget::paint 函数中绘制文本