如何移除Base Plot周围空白区域并保存为PNG文件?
解决R绘图移除空白并保存PNG的问题
我来帮你搞定这个问题!要移除图形周围的空白并正确保存为PNG,我们可以从调整边距参数和规范保存流程两方面入手,结合你的代码给你修改方案:
方法1:调整基础绘图的边距与保存参数
你的代码里已经用了par(mai)来设置边距,但当前的边距值(c(1,1.2,1,1))偏大,我们可以缩小它;同时直接用png()函数指定输出文件的尺寸,避免默认尺寸带来的额外空白。
修改后的完整代码如下:
# 先指定PNG输出的参数:文件名、尺寸、分辨率(可选) png("barplot_output.png", width = 600, height = 400, res = 100, bg = "white") # 调整边距:下、左、上、右的边距(单位:英寸),按需缩小上下边距 par(mai = c(0.8, 1.2, 0.3, 0.3)) valores <- c(12.5,25.0,12.5,25.0) names(valores) <- c("Escrita","Leitura","Comp. Oral","Exp. Oral") # 调整ylim,缩小y轴范围,去掉条形上下的空白(原ylim是0-5,现在改成0.2-4.8贴合条形位置) barplot(valores, horiz = TRUE, xaxt="n", xlim=c(0,100), width=0.3, ylim=c(0.2, 4.8), # 关键调整:贴合条形的实际位置 xlab="Nível", space=c(0.3,0.3,0.3,0.3), col="firebrick", las=1) ticks <- c(0,25,50,75) axis(1,at=ticks,labels=c("","A1","A2","B1")) # 关闭绘图设备,完成保存 dev.off()
关键调整点说明:
png()函数:提前指定输出文件,通过width和height控制画布大小,res调整分辨率(让图更清晰),bg设置背景色。par(mai):减小上下边距的数值(第三个和第四个值),去掉顶部和右侧的多余空白。ylim参数:原来的0-5范围太大,改成0.2-4.8刚好贴合四个条形的位置,去掉上下的空白区域。
方法2:用par(mar)替代mai(可选)
如果你习惯用行数来设置边距,可以用mar参数(默认是c(5,4,4,2)+0.1),比如:
par(mar = c(3, 5, 1, 1)) # 下、左、上、右的行数,数值越小边距越窄
这样调整后,你就能得到几乎没有多余空白的条形图,并且成功保存为PNG文件啦!
内容的提问来源于stack exchange,提问作者Sofia Azevedo
相关产品推荐
相关产品推荐

