我想使用一個函式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
我錯過了什么?
uj5u.com熱心網友回復:
請讓我知道這正是您所期待的。
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()宣告。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/338244.html
