划分区间 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 = [f'{bins[i]}-{bins[i+1]}' for i in range(len(bins)-1)] fig, ax = plt.subplots(figsize=(12, 6)) # 绘制柱形图 plt.bar(counts.index.astype(str), counts.values) # 添加数据标签 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() 柱形图从左到右是按数量从大到小显示的顺序,能不能按bins中的顺序从左往右显示
时间: 2023-12-14 10:36:36 浏览: 56
关于pandas的离散化,面元划分详解
可以按照 bins 中的顺序从左往右显示,只需要在绘制柱形图时指定 x 轴的标签为 labels 即可。修改代码如下:
```
fig, ax = plt.subplots(figsize=(12, 6))
# 绘制柱形图,并按照 labels 的顺序指定 x 轴的标签
plt.bar(labels, counts[labels])
# 添加数据标签
for i, v in enumerate(counts[labels]):
plt.text(i, v, str(v), ha='center', va='bottom')
# 设置图表标题和坐标轴标签
plt.title('Score Distribution')
plt.xlabel('Range')
plt.ylabel('Count')
# 显示图表
plt.show()
```
阅读全文