# 划分区间 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['本年比上一年归母倍数'] data1 = data_forecast_is_stk_bs_rpt_cw_befor_big['本年比上一年归母倍数'] # 统计每个柱子的数据 hist, edges = pd.cut(data, bins=bins, right=False, include_lowest=True, retbins=True) hist1, edges1 = pd.cut(data1, bins=bins, right=False, include_lowest=True, retbins=True) counts = hist.value_counts() counts1 = hist1.value_counts() # 按照 hist 的顺序重新排序 counts counts = counts.reindex(hist.cat.categories) counts1 = counts1.reindex(hist1.cat.categories) # 按照 bins 的顺序给每个柱子指定标签 labels = counts.index.astype(str) labels1 = counts1.index.astype(str) fig, ax = plt.subplots(figsize=(18, 6)) # 绘制柱形图 #plt.bar(labels, counts) plt.bar(labels, counts, width=0.4, align='center', label='Data 1') plt.bar(labels1, counts1, width=0.4, align='center', label='Data 2') 2个柱子合并了能不能分开
时间: 2023-12-14 12:40:08 浏览: 23
可以分开绘制,只需要将绘制柱状图的代码分别写在两个子图中即可。可以参考如下代码:
```
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(18, 6))
# 绘制第一个子图
hist, edges = pd.cut(data, bins=bins, right=False, include_lowest=True, retbins=True)
hist1, edges1 = pd.cut(data1, bins=bins, right=False, include_lowest=True, retbins=True)
counts = hist.value_counts()
counts1 = hist1.value_counts()
counts = counts.reindex(hist.cat.categories)
counts1 = counts1.reindex(hist1.cat.categories)
labels = counts.index.astype(str)
labels1 = counts1.index.astype(str)
ax1.bar(labels, counts, width=0.4, align='center', label='Data 1')
ax1.set_title('Data 1')
# 绘制第二个子图
ax2.bar(labels1, counts1, width=0.4, align='center', label='Data 2')
ax2.set_title('Data 2')
# 添加图例
fig.legend(loc='upper right')
plt.show()
```
这里使用了 `subplots` 函数创建了两个子图,并将绘制柱状图的代码分别写在了两个子图中。同时,为了方便区分两个子图,我在每个子图的标题中添加了不同的数据标识。最后,通过 `fig.legend` 函数添加了图例。