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

如何使ggplot2堆叠极坐标条形图的各楔形块间距均匀?

解决ggplot2堆叠极坐标条形图扇区间距不一致问题

问题原因

你遇到的Chordata与Molluscs楔形块间距过宽的问题,主要是离散x轴的条形宽度未统一设置,加上ylim的不规范使用干扰了极坐标布局,导致扇区间距分配不均。

解决方案

按以下步骤修改代码即可统一所有扇区间距:

  1. 确保类别变量为因子类型
    先将Macrogroups转换为因子,保证每个类别平等分配角度区间:
# 替换levels为你的实际类别顺序
stacked_table$Macrogroups <- factor(stacked_table$Macrogroups, levels = c("Chordata", "Molluscs", "其他类别"))
  1. 统一条形宽度与轴范围设置
    修改ggplot代码,添加width=1让条形填满对应区间,用scale_y_continuous替代ylim,并通过scale_x_discrete统一控制间距:
circular <- ggplot(stacked_table, aes(x = Macrogroups, y = percent, fill = group_label)) + 
  geom_bar(stat = "identity", color = NA, alpha = 0.9, size = 0.5, width = 1) + # 统一条形宽度
  scale_y_continuous(limits = c(-30, 120), expand = c(0, 0)) + # 规范y轴范围
  theme_minimal() +  
  theme(axis.text = element_blank(),
        axis.title = element_blank(),
        panel.grid = element_blank(),
        legend.position = "top") + 
  geom_text(data = label_data,aes(x = Macrogroups, y = total_height + 10, label = label_text, angle = angle, hjust = hjust),
            size = 4, color = "black", fontface = "bold", inherit.aes = FALSE) +
  coord_radial(inner.radius = 0) +
  scale_fill_manual(values = c(
    "Assessed Endemics" = "darkgreen",
    "Assessed Non Endemics" = "#d9d615",
    "Non-assessed Endemics" = "#d7191c",
    "Non-assessed Non Endemics" = "darkgrey"
  )) +
  scale_x_discrete(expand = c(0.05, 0)) # 调整第一个数值控制间距,越大间距越宽

关键说明

  • width=1:让每个条形完全占据对应x轴区间,避免宽度差异导致的间距不均。
  • scale_x_discrete(expand):通过expand参数统一设置所有扇区的空隙大小,可根据需求调整数值。
  • 因子类型的Macrogroups:确保每个类别获得相等的角度分配,从根源避免间距异常。

内容的提问来源于stack exchange,提问作者Ema_Plant95

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 04:03:13