R语言添加主标题与x/y轴标题后坐标轴刻度标签消失问题
问题原因
核心错误是R基础绘图的参数设置顺序颠倒。par()函数对边距mar、坐标轴间距mgp的调整,必须在调用绘图函数前执行才会作用于当前绘图。
现有代码先调用boxplot()完成了全部绘图元素(主标题、坐标轴、刻度标签)的渲染,之后才执行par()修改参数。此时修改的参数不会回溯调整已经绘制完成的元素位置,反而会造成绘图区域坐标映射错位,将已生成的刻度标签挤出可视范围,表现为刻度标签消失。
修复方法
- 将
par()参数设置语句移动到boxplot()调用之前,让参数在绘图初始化阶段就生效。 - 由于x轴需要显示31个日期刻度,可适当增大下侧边距,避免刻度标签因为空间不足被截断。
修正后可运行代码
# 优先设置绘图全局参数 par(mar = c(6, 4.5, 4, 2), mgp = c(2.5, 1, 0)) # 再调用绘图函数 boxplot(TrailDailyAir_Boxplots$`1`,TrailDailyAir_Boxplots$`2`, TrailDailyAir_Boxplots$`3`,TrailDailyAir_Boxplots$`4`,TrailDailyAir_Boxplots$`5`, TrailDailyAir_Boxplots$`6`,TrailDailyAir_Boxplots$`7`,TrailDailyAir_Boxplots$`8`, TrailDailyAir_Boxplots$`9`,TrailDailyAir_Boxplots$`10`,TrailDailyAir_Boxplots$`11`, TrailDailyAir_Boxplots$`12`,TrailDailyAir_Boxplots$`13`,TrailDailyAir_Boxplots$`14`, TrailDailyAir_Boxplots$`15`,TrailDailyAir_Boxplots$`16`,TrailDailyAir_Boxplots$`17`, TrailDailyAir_Boxplots$`18`,TrailDailyAir_Boxplots$`19`,TrailDailyAir_Boxplots$`20`, TrailDailyAir_Boxplots$`21`,TrailDailyAir_Boxplots$`22`,TrailDailyAir_Boxplots$`23`, TrailDailyAir_Boxplots$`24`,TrailDailyAir_Boxplots$`25`,TrailDailyAir_Boxplots$`26`, TrailDailyAir_Boxplots$`27`,TrailDailyAir_Boxplots$`28`,TrailDailyAir_Boxplots$`29`, TrailDailyAir_Boxplots$`30`,TrailDailyAir_Boxplots$`31`, xlab = "Day", ylab = "ppb", main = "Hourly ppb of SO2 in October 2015") # 最后添加辅助元素 abline(h = 70, col = "red") text(7, 225, "CCME Guideline = 70ppb", col = "red")
优化提示
逐列输入31个变量的写法冗余度很高,可以直接用列索引简化代码,效果完全一致:boxplot(TrailDailyAir_Boxplots[, 1:31], xlab = "Day", ylab = "ppb", main = "Hourly ppb of SO2 in October 2015")
内容的提问来源于stack exchange,提问作者Leo
相关产品推荐
相关产品推荐

