Python绘制单X轴三Y轴直方图/柱状图及X轴区间优化问题
解决X轴显示混乱并按区间分组绘制柱状图
首先,你遇到的X轴混乱问题是因为method列包含了752个独立取值,每个值对应一个柱子,自然会挤在一起看不清。我们可以通过数据分箱+分组聚合的方式,把method划分到你指定的区间里,再基于这些区间绘制柱状图。
下面是完整的解决方案,分步骤说明:
1. 数据预处理:给method划分区间
我们用Pandas的pd.cut()函数把method值归类到你想要的区间,同时给每个区间设置易读的标签:
import pandas as pd import matplotlib.pyplot as plt # 读取数据 df = pd.read_csv("chessMethodReq.txt") # 定义区间范围和对应的显示标签 bins = [0, 100, 200, 300, 400, 500, 600, 700, 800] labels = ['[0,100]', '[100,200]', '[200,300]', '[300,400]', '[400,500]', '[500,600]', '[600,700]', '[700,800]'] # 给method列分箱,生成新的区间列 df['method_interval'] = pd.cut(df['method'], bins=bins, labels=labels, include_lowest=True)
2. 按区间聚合数据
接下来把每个区间内的三个Requirement指标聚合起来——这里默认用求和,如果你需要看区间内的平均水平,把sum()改成mean()即可:
# 按区间分组,聚合三个Requirement列 grouped_df = df.groupby('method_interval')[['RequirementT', 'RequirementN', 'RequirementU']].sum().reset_index()
3. 绘制分组后的柱状图
现在用聚合后的数据绘图,X轴就是你想要的区间,不会再出现混乱:
# 绘制柱状图,调整参数让图表更美观 ax = grouped_df.plot.bar( x='method_interval', y=['RequirementT', 'RequirementN', 'RequirementU'], figsize=(10,6), # 设置图表尺寸 width=0.7, # 调整柱子宽度 rot=45 # X轴标签旋转45度,避免重叠 ) # 添加标题和轴标签 plt.title('Requirement Metrics by Method Intervals') plt.xlabel('Method Intervals') plt.ylabel('Requirement Values') # 自动调整布局,防止标签被截断 plt.tight_layout() plt.show()
关键细节说明
include_lowest=True确保method=0的数值能被正确包含在第一个区间里- 聚合方式可按需切换:如果要统计每个区间的总需求数用
sum(),要查看区间内的平均表现用mean() - 调整
figsize和rot参数可以进一步优化图表的可读性,避免标签重叠
内容的提问来源于stack exchange,提问作者منى
相关产品推荐
相关产品推荐

