我正在嘗試制作一個生成一些用于視覺評估的圖的函式。我通常將 ggplot 用于大多數目的,但模型的基本圖也很有幫助。當我嘗試分配基圖時,它會生成圖,但不會將其分配給變數,因此當我嘗試回傳圖(使用list())時,基圖不會顯示并回傳 ggplot 加上 [空值]
玩具示例
library(tidyverse)
my.fun = function(){
mod.lm = lm(mpg ~ disp, data = mtcars)
p1 = mtcars %>%
ggplot(aes(x = disp, y = disp))
geom_point()
par(mfrow = c(2,2))
p2 <- plot(mod.lm)
list(p1, p2)
}
my.fun()
uj5u.com熱心網友回復:
基礎繪圖函式直接寫入繪圖設備,與 ggplot2 函式不同,ggplot2 函式會生成一個在您列印時進行書寫的物件。可以保存一個基本圖(使用recordPlot()函式),但它已經適應了它使用的任何輸出設備,如果replayPlot()在不同的設備上顯示(使用),它看起來不會那么好。
uj5u.com熱心網友回復:
我從未使用過基本圖,但在幾次嘗試中遇到了 recordPlot(),正如@user2554330(擊敗我 2 分鐘)所說,您可以保存兩個圖。改變 plot() 和 ggplot() 的順序對我有用,所以第一個 plot() 被呼叫而不是覆寫 ggplot() 輸出。您也可以將串列存盤在變數中,然后呼叫物件。
library(tidyverse)
library(mtcars)
library(ggplot2)
my.fun = function(){
mod.lm = lm(mpg ~ disp, data = mtcars)
par(mfrow = c(2,2))
plot(mod.lm)
p1 <- recordPlot()
p2 <- mtcars %>%
ggplot(aes(x = disp, y = disp))
geom_point()
list(p1, p2)
}
my.fun()
a <- my.fun()
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/338774.html
