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

如何在Matplotlib分组柱状图中增大X轴柱子间的间距?

解决分组柱状图X轴柱子无间距问题

你的问题出在width参数设置为1.0,这会让每组柱子完全占满X轴刻度的宽度,导致组与组之间没有空隙。下面是具体的解决方法:

方法1:调整width参数减小组宽度

将width从1.0改为0.7左右的数值,这样每组柱子的总宽度会小于X轴刻度间距,组与组之间自动留出空隙,同时组内柱子也会有合理间距。

修改后的代码:

import pandas as pd
import matplotlib.pyplot as plt

data = [['Tom', 'a'], ['Tom', 'a'],['nick', 'a'], ['juli', 'a'],['juli', 'a'],['juli', 'b'],['Simon', 'b'],['Tom', 'b'],['Sandra', 'a'],['Stefan', 'b'],['Johnny', 'a'],['Johnny', 'b'],['Johnny', 'b'],['Johnny', 'b']]
df = pd.DataFrame(data, columns=['name', 'category'])

ax= df.groupby('name')['category'].value_counts().unstack(0).plot(
    kind ="bar", 
    width=0.7,  # 减小width值以留出间距
    figsize = (20, 8), 
    color=['#F9986C', '#C9B265', 'blue', 'red', '#6ABFD0','#C4A5F6','yellow']  # 匹配name数量的颜色
)
plt.ylabel('Count',fontsize=23)
plt.xlabel('Category', fontsize=23)
plt.legend(bbox_to_anchor=(0.99, 0.99), loc='upper right', borderaxespad=0)
plt.show()

方法2:调整分组逻辑(更常用的布局)

如果你希望每个姓名作为X轴标签,每个标签下显示对应a/b类别的计数,这种布局的间距会更直观。只需调整分组和unstack的方向:

import pandas as pd
import matplotlib.pyplot as plt

data = [['Tom', 'a'], ['Tom', 'a'],['nick', 'a'], ['juli', 'a'],['juli', 'a'],['juli', 'b'],['Simon', 'b'],['Tom', 'b'],['Sandra', 'a'],['Stefan', 'b'],['Johnny', 'a'],['Johnny', 'b'],['Johnny', 'b'],['Johnny', 'b']]
df = pd.DataFrame(data, columns=['name', 'category'])

# 切换分组和unstack的维度
ax= df.groupby('category')['name'].value_counts().unstack(0).plot(
    kind ="bar", 
    width=0.8, 
    figsize = (20, 8), 
    color=['#F9986C', '#C9B265']
)
plt.ylabel('Count',fontsize=23)
plt.xlabel('Name', fontsize=23)
plt.legend(bbox_to_anchor=(0.99, 0.99), loc='upper right', borderaxespad=0)
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 09:24:23