[英]How to produce a jpeg plot using a function?
我有以下示例代碼用於為具有分類變量的數據框生成箱形圖。
DF<-data.frame("A"=rnorm(20,3,0.2),"B"=rnorm(20,2,0.1),"C"=rnorm(20,2,0.3))
DF<-stack(DF)
BPFunc <- function ( PDataSet,Cat, PData, PTitle,XTitle, YTitle,PlotName) {
arguments <- as.list(match.call())
PData = eval(arguments$PData, PDataSet)
Cat = eval(arguments$Cat, PDataSet)
PDataSet<-data.frame(Cat=Cat,PData=PData)
bp <- ggplot(PDataSet, aes(x = Cat, y = as.numeric( PData) , fill = factor( Cat)))
bp <- bp + geom_boxplot(notch = F)
bp <- bp + labs(title=PTitle, x=XTitle, y =YTitle)
bp <- bp + theme_bw()
bp
}
上面的功能可以使用以下命令成功工作:
BPFunc(DF, ind , values ,"My Box","Categories","Value")
現在,我希望我的代碼能夠使用以下修改將繪圖保存在jpeg設備中:
BPFunc <- function ( PDataSet,Cat, PData, PTitle,XTitle, YTitle,PlotName) {
arguments <- as.list(match.call())
PData = eval(arguments$PData, PDataSet)
Cat = eval(arguments$Cat, PDataSet)
PDataSet<-data.frame(Cat=Cat,PData=PData)
bp <- ggplot(PDataSet, aes(x = Cat, y = as.numeric( PData) , fill = factor( Cat)))
bp <- bp + geom_boxplot(notch = F)
bp <- bp + labs(title=PTitle, x=XTitle, y =YTitle)
bp <- bp + theme_bw()
jpeg(PlotName, width=4, height=3, units="in", res=600 )
par(mfrow = c(1,1), mgp=c(2, 0.5, 0),oma = c(4,3,4,3) + 0.1, mar = c(3,3,1,1)+0.1,cex=0.5 )
bp
graphics.off()
}
符合我的期望,我希望從函數中將圖形保存在PlotName.jpeg文件中,並且我還需要可以通過par()函數控制圖形特性。 但是當我調用函數時,產生的jpeg設備為空:
BPFunc(DF, ind , values ,"My Box","Categories","Value","MyPlot.jpeg")
另外,我知道我可以使用print()函數,如下所示:
BPFunc <- function ( PDataSet,Cat, PData, PTitle,XTitle, YTitle,PlotName) {
arguments <- as.list(match.call())
PData = eval(arguments$PData, PDataSet)
Cat = eval(arguments$Cat, PDataSet)
PDataSet<-data.frame(Cat=Cat,PData=PData)
bp <- ggplot(PDataSet, aes(x = Cat, y = as.numeric( PData) , fill = factor( Cat)))
bp <- bp + geom_boxplot(notch = F)
bp <- bp + labs(title=PTitle, x=XTitle, y =YTitle)
bp <- bp + theme_bw()
jpeg(PlotName, width=4, height=3, units="in", res=600 )
par(mfrow = c(1,1), mgp=c(2, 0.5, 0),oma = c(4,3,4,3) + 0.1, mar = c(3,3,1,1)+0.1,cex=0.5 )
print(bp)
graphics.off()
}
但是,當我們使用print()時,繪圖特性不能由par()函數控制。 換句話說,par()函數不能與print()一起使用。 請幫助我知道我可以使用par()來調整繪圖特征時如何生成繪圖嗎? 謝謝
嘗試
BPFunc <- function (PDataSet,Cat, PData, PTitle,XTitle, YTitle,PlotName) {
arguments <- as.list(match.call())
PData = eval(arguments$PData, PDataSet)
Cat = eval(arguments$Cat, PDataSet)
PDataSet<-data.frame(Cat=Cat,PData=PData)
bp <- ggplot(PDataSet, aes(x = Cat, y = as.numeric( PData) , fill = factor( Cat)))
bp <- bp + geom_boxplot(notch = F)
bp <- bp + labs(title=PTitle, x=XTitle, y =YTitle)
bp <- bp + theme_bw()
bp
ggsave(PlotName, width=4, height=3, units="in", dpi=600)
}
BPFunc(DF, ind , values ,"My Box","Categories","Value","MyPlot.jpeg")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.