求助:如何调整柱状图Y轴的Bin Size以优化可视化效果?
调整柱状图Y轴刻度间隔的方法
你可以通过Matplotlib的刻度设置功能调整Y轴刻度间隔,让图表展示更清晰。下面是两种实用的修改方案,任选其一即可:
方法一:直接指定固定刻度
import matplotlib.pyplot as plt import pandas as pd age_occ = df_rename.groupby(['Age', 'Occupation'])['Occupation'].count().unstack('Age').fillna(0) ax_age_occ = age_occ.plot.bar(figsize=(15,7),stacked=False) plt.ylabel('Count') plt.xlabel('Occupation') # 自定义Y轴刻度,示例设置为0、50、100...可根据你的数据范围调整 ax_age_occ.set_yticks([0, 50, 100, 150, 200, 250]) # 可选:强制刻度显示为整数,避免小数干扰 ax_age_occ.yaxis.set_major_formatter(plt.FuncFormatter(lambda x, _: int(x)))
方法二:按固定间隔自动生成刻度
如果不想手动罗列刻度值,用numpy可以自动匹配数据范围生成刻度:
import matplotlib.pyplot as plt import pandas as pd import numpy as np age_occ = df_rename.groupby(['Age', 'Occupation'])['Occupation'].count().unstack('Age').fillna(0) ax_age_occ = age_occ.plot.bar(figsize=(15,7),stacked=False) plt.ylabel('Count') plt.xlabel('Occupation') # 设置刻度间隔为50,自动计算最大刻度值 max_count = age_occ.values.max() yticks = np.arange(0, max_count + 50, 50) ax_age_occ.set_yticks(yticks) ax_age_occ.yaxis.set_major_formatter(plt.FuncFormatter(lambda x, _: int(x)))
补充说明
- 你可以根据实际数据的人数范围,把示例中的间隔值(比如50)改成20、100等,让Y轴刻度分布更贴合你的数据。
- 原图表是按职业分组的多系列柱状图,展示不同年龄层的人数分布,调整刻度后能更直观地对比各职业的人数差异。
内容的提问来源于stack exchange,提问作者Pauline21
相关产品推荐
相关产品推荐

