ggplot2中轴标签超出绘图区域:如何不扩展绘图显示完整标签?
解决ggplot2轴标签被截断的问题(不扩展绘图尺寸)
你的问题是X轴的时间标签被绘图区域截断了,想要在不改变绘图整体宽高的前提下完整显示它们。这里有个简单有效的解决方案,核心是调整绘图边距和标签对齐方式:
修改后的完整代码
sixdez <- data.frame( outTemp3=c(-5.0, -4.5, -4.5, -4.5, -4.5, -4.5, -4.5, -4.5, -4.0, -4.5, -4.0, -4.0, -3.5), hour=c("18:00", "19:00", "20:00", "21:00", "22:00", "23:00", "00:00", "01:00", "02:00", "03:00", "04:00", "05:00", "06:00") ) p2 <- ggplot(sixdez, aes(hour, outTemp3, group=1)) + geom_line(colour="blue", size=3, linetype="dashed" )+ scale_x_discrete(breaks = levels(sixdez$hour)[c(F, rep(T, 1))])+ ylab("Ambient Temperature °C\n")+ xlab("time of day")+ theme( panel.grid.major = element_blank(), panel.grid.major.x = element_blank(), panel.grid.minor = element_blank(), panel.background = element_rect(fill = "transparent", colour = NA), plot.background = element_rect(fill = "transparent", colour = NA), axis.line = element_line(colour = "black", size=2), panel.border = element_blank(), axis.text=element_text(size=65, face="bold"), # 调整X轴文本对齐方式,hjust=1让旋转后的标签右对齐,避免截断 axis.text.x = element_text(vjust=+0.6, size=65, angle=45, hjust=1), axis.title.y=element_text(size=65,face="bold", colour="blue"), axis.title.x =element_text(size=55, face="bold"), axis.ticks = element_line(size = 2), axis.ticks.length=unit(.25, "cm"), # 关键:增加底部边距,给X轴标签留出显示空间,不改变绘图整体尺寸 plot.margin = unit(c(1, 1, 2, 1), "cm") )+ scale_y_continuous(breaks = seq(-7.5,5,2.5), limits=c(-7.5,5),position = "right") png('plot2.1vl08Ta.jpg', width = 1380, height = 850, units = "px", bg = "transparent") print(p2) dev.off()
关键修改说明
plot.margin参数:通过加大底部(第三个数值)的边距,给X轴旋转后的标签留出足够的显示空间,这样不用调整png()里的宽高参数,就能完整显示标签。你可以根据实际需求调整2这个数值,比如改成2.5如果标签还是有点挤。axis.text.x的hjust=1:当标签旋转45度时,设置hjust=1(右对齐)能让标签的末端对齐X轴刻度,避免部分标签因为对齐方式问题被截断,配合vjust调整垂直位置,让整体排版更美观。
这样修改后,你的X轴标签就能完整显示,同时绘图的整体尺寸保持不变。
内容的提问来源于stack exchange,提问作者user8333220
相关产品推荐
相关产品推荐

