You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调整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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 00:00:19