如何调整ggplot2分组柱状图的柱宽以使其更纤细?
调整分组柱状图柱宽的方法
是的,你可以通过设置geom_col_pattern()中的width参数来让柱子变得更纤细。因为你绘制的是分组柱状图,还需要配合调整position_dodge()的宽度参数,避免分组柱子重叠或间距不合理。
修改后的代码示例
# 加载所需包 library(ggpattern) library(tidyverse) # 创建数据集 specie <- c(rep("sorgho" , 3) , rep("poacee" , 3) , rep("banana" , 3) , rep("triticum" , 3) ) condition <- rep(c("normal" , "stress" , "Nitrogen") , 4) value <- abs(rnorm(12 , 0 , 15)) data <- data.frame(specie,condition,value) df <- data # 绘制分组柱状图(调整柱宽) set.seed(123) ggplot(df, aes(fill = condition, y = value, x = specie)) + scale_fill_manual( "Position", values = c("black", "white", "lightgrey") ) + scale_pattern_manual( "Position", values = c("none", "stripe", "none") ) + geom_col_pattern( aes(pattern = condition), width = 0.6, # 控制单组柱子的整体宽度,数值越小柱子越细 position = position_dodge(width = 0.7), # 控制分组内柱子的间距,需和width参数匹配 pattern_angle = 45, pattern_density = .1, pattern_spacing = .04, pattern_fill = "black", color = "black" ) + theme_classic() + theme( text = element_text(size = 16, family = "sans"), plot.title = element_text(hjust = 0.5, size = 20, face = "bold") ) + labs( x = "湖泊", y = "浮游生物总丰度 (×10^6 个/L)" )
参数说明
geom_col_pattern(width = ...):控制每个x轴类别下,整个分组柱子的总宽度,数值越小,柱子整体越纤细。position_dodge(width = ...):控制同一x轴类别下,不同分组柱子之间的间距,建议设置为略大于geom_col_pattern的width值,保证柱子不重叠且间距合理。
你可以根据参考图的效果,调整这两个参数的具体数值(比如改成0.5、0.4等),直到达到理想的纤细程度。
内容的提问来源于stack exchange,提问作者confusedindividual
相关产品推荐
相关产品推荐

