如何消除ggplot2中两个图例间的巨大间距?
解决ggplot2中两个图例间距过大的问题
问题出在你设置legend.box = "vertical"后,默认的图例框间距参数值过大,导致两个图例之间出现不必要的空白。你可以通过以下调整来修复:
- 在
theme()中添加legend.box.spacing参数,控制两个图例之间的垂直间距,单位可用pt、mm等,根据需求设置数值(比如unit(2, "pt")) - 可选:调整
legend.margin减少单个图例内部的边距,进一步优化紧凑度
修改后的完整代码如下(新增参数已标注):
pchla.pco2.l <- ggplot(data = surf.new) + geom_point(aes(x =pCO2, y = pchla, color = Area, shape= factor(Location)), size =4) + labs(x=expression(bold(paste("Log(", bolditalic('p'), "CO"['2'],"+1)"))), y=expression(bold(paste("Log (Chl-",bolditalic ("a"), " +1)"))), title =expression(bold(paste(bolditalic('p'), "CO"['2']," vs. <20 µm Chl-", bolditalic ("a"))))) + geom_smooth(aes(x=pCO2, y = pchla), method = lm, formula = y ~ poly(x, 2, raw = T),color="orange1", se = T, data = surf.new) + scale_shape_manual(values = location_type) + scale_colour_manual(values = gom_region_colors) + labs(color = "Area", shape = "Location") + expand_limits(y=c(0, 1.25), x=c(5.2, 6.2)) + theme(axis.text.x = element_text(margin = margin(t = 10, r = 0, b = 10, l = 0),size=12, face = "bold"), axis.text.y = element_text(margin = margin(t = 0, r = 10, b = 0, l = 10), size=12, face = "bold"), axis.title.x = element_text(margin = margin(t = 10, r = 0, b = 10, l = 0), size=14, face = "bold"), axis.title.y = element_text(margin = margin(t = 0, r = 10, b = 0, l = 10), size=14, face = "bold"), legend.position = "top", legend.title = element_text(margin = margin(t = 0, r = 0, b = 0, l = 0), size=12, face = "bold"), legend.text = element_text(margin = margin(t = 0, r = 0, b = 0, l = 0), size=10), plot.title = element_text(margin = margin(t = 0, r = 0, b = 0, l = 0),hjust = 0.5, size = 14, face = 'bold'), axis.line.x = element_line(color="black", size = 1), #add axis line axis.line.y = element_line(color="black", size = 1), panel.background = element_blank(), legend.key=element_blank(), legend.box = "vertical", # 新增:控制图例框之间的垂直间距 legend.box.spacing = unit(2, "pt"), # 可选:缩小单个图例的内部边距 legend.margin = margin(t = 0, r = 0, b = 0, l = 0))
如果需要更紧凑的效果,可以把legend.box.spacing的数值调小到unit(0, "pt"),或者根据实际预览结果微调。
内容的提问来源于stack exchange,提问作者garfunkl_30
相关产品推荐
相关产品推荐

