# 划分区间 bins = [0,1,2,3,4,5,10,15,20,25,30,35,40,45,50,60,70,80,90,100,1220] data = data_forecast_is_stk_bs_rpt_zq_befor_big['本年比上一年归母倍数'] # 统计每个柱子的数据 hist, edges = pd.cut(data, bins=bins, right=False, include_lowest=True, retbins=True) counts = hist.value_counts() # 按照 bins 的顺序给每个柱子指定标签 labels = counts.index.astype(str) fig, ax = plt.subplots(figsize=(18, 6)) # 绘制柱形图 plt.bar(labels, counts) # 添加数据标签 for i, v in enumerate(counts.values): plt.text(i, v, str(v), ha='center', va='bottom') # 设置图表标题和坐标轴标签 plt.title('Score Distribution') plt.xlabel('Range') plt.ylabel('Count') # 显示图表 plt.show() 修改柱子的排序
时间: 2023-09-15 11:24:19 浏览: 80
你可以将 labels 列表按照自己的需求重新排序,然后再根据排好序的 labels 列表绘制柱形图。下面是一个示例代码:
```python
bins = [0,1,2,3,4,5,10,15,20,25,30,35,40,45,50,60,70,80,90,100,1220]
data = data_forecast_is_stk_bs_rpt_zq_befor_big['本年比上一年归母倍数']
# 统计每个柱子的数据
hist, edges = pd.cut(data, bins=bins, right=False, include_lowest=True, retbins=True)
counts = hist.value_counts()
# 按照 bins 的顺序给每个柱子指定标签
labels = counts.index.astype(str)
# 将 labels 按照自己的需求重新排序
sorted_labels = ['0-5', '5-10', '10-15', '15-20', '20-25', '25-30', '30-35', '35-40', '40-45', '45-50', '50-60', '60-70', '70-80', '80-90', '90-100', '>100', '1220+']
sorted_counts = [counts.loc[int(label)] for label in sorted_labels]
fig, ax = plt.subplots(figsize=(18, 6))
# 绘制柱形图
plt.bar(sorted_labels, sorted_counts)
# 添加数据标签
for i, v in enumerate(sorted_counts):
plt.text(i, v, str(v), ha='center', va='bottom')
# 设置图表标题和坐标轴标签
plt.title('Score Distribution')
plt.xlabel('Range')
plt.ylabel('Count')
# 显示图表
plt.show()
```
在这个示例中,我将 labels 列表按照数值大小重新排序,并将排序后的 labels 和对应的 counts 绘制成柱形图。你可以根据自己的需求修改排序规则。
阅读全文