我有以下示例代码,用于为具有分类变量的数据框生成箱线图。
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() 来调整情节特征?谢谢