Matplotlib水平条形图分层问题求助:将蓝色图置于红色图下方
解决Matplotlib水平条形图层级问题
核心逻辑:Matplotlib的条形堆叠层级由绘制顺序决定——先画的条形在底层,后画的在顶层。要让蓝色的Engajado条形处于红色Finalizado条形下方,只需调整绘制顺序即可。
修正后的堆叠条形图代码:
fig, ax = plt.subplots() # 先绘制底层的Engajado(蓝色) ax.barh(ind, eng, label='Engajado', color='#1f77b4') # 再绘制顶层的Finalizado(红色) ax.barh(ind, fin, label='Finalizado', color='#ff4b5c') ax.legend() fig.set_figheight(15) fig.set_figwidth(15) plt.show()
- 若你需要的是分组而非堆叠的水平条形图(每个类别下显示两个独立条形),可通过给条形添加偏移量实现:
import numpy as np fig, ax = plt.subplots() y_pos = np.arange(len(ind)) bar_width = 0.4 # Engajado条形向左偏移 ax.barh(y_pos - bar_width/2, eng, bar_width, label='Engajado', color='#1f77b4') # Finalizado条形向右偏移 ax.barh(y_pos + bar_width/2, fin, bar_width, label='Finalizado', color='#ff4b5c') # 设置y轴刻度与标签 ax.set_yticks(y_pos) ax.set_yticklabels(ind) ax.legend() fig.set_figheight(15) fig.set_figwidth(15) plt.show()
内容的提问来源于stack exchange,提问作者INGl0R1AM0R1
相关产品推荐
相关产品推荐

