R语言绘制多箱线图向右偏移超出PDF页面的解决建议
箱线图偏移及超出PDF页面的解决建议
以下是几种可行的解决思路及代码示例:
1. 调整绘图边距
通过par(mar)参数自定义绘图区域的边距(参数顺序为下、左、上、右),缩小不必要的边距来为多个子图腾出空间:
arr = rnorm(1000, 50, 20) # 缩小左右边距,适配1行3列的布局 par(mfrow = c(1, 3), mar = c(3, 4, 2, 1)) boxplot(arr, ylim=c(0,70), col = "red") boxplot(arr,ylim=c(0,70), col = "#EEEEEC") boxplot(arr,ylim=c(0,70), col = "blue")
2. 自定义PDF导出尺寸
直接使用R的pdf()函数指定足够的宽度和高度,避免RStudio默认尺寸不足的问题:
arr = rnorm(1000, 50, 20) # 导出PDF时设置合适的宽高,确保三个图完整显示 pdf("boxplots_result.pdf", width = 10, height = 4) par(mfrow = c(1, 3)) boxplot(arr, ylim=c(0,70), col = "red") boxplot(arr,ylim=c(0,70), col = "#EEEEEC") boxplot(arr,ylim=c(0,70), col = "blue") dev.off()
3. 优化绘图元素节省空间
缩小轴标签、刻度的字体大小,减少不必要的空间占用:
arr = rnorm(1000, 50, 20) par(mfrow = c(1, 3)) # 用cex.axis缩小刻度字体,cex.lab缩小轴标签字体 boxplot(arr, ylim=c(0,70), col = "red", cex.axis=0.8, cex.lab=0.9) boxplot(arr,ylim=c(0,70), col = "#EEEEEC", cex.axis=0.8, cex.lab=0.9) boxplot(arr,ylim=c(0,70), col = "blue", cex.axis=0.8, cex.lab=0.9)
4. 使用layout灵活分配布局
layout()比mfrow更灵活,可精确控制每个子图的宽度占比:
arr = rnorm(1000, 50, 20) # 1行3列布局,三个图宽度均等分配 layout(matrix(1:3, nrow=1), widths=c(1,1,1)) boxplot(arr, ylim=c(0,70), col = "red") boxplot(arr,ylim=c(0,70), col = "#EEEEEC") boxplot(arr,ylim=c(0,70), col = "blue")
内容的提问来源于stack exchange,提问作者mccurcio
相关产品推荐
相关产品推荐

