Matplotlib中多列图例设置:将图例置于X轴下方
问题描述
我用以下代码创建了一个堆叠水平条形图,用来展示归一化序列里的数值:
data = df['state'].value_counts(normalize=True).to_frame() data.T.plot.barh(stacked=True, figsize=(18,3))
生成的图表如下:
我希望将图例标签排列成多列,并显示在X轴下方,请问该如何实现?
解决方案
你可以通过获取图表的坐标轴对象,调用legend()方法时设置对应参数来实现需求。修改后的代码如下:
import matplotlib.pyplot as plt data = df['state'].value_counts(normalize=True).to_frame() ax = data.T.plot.barh(stacked=True, figsize=(18,3)) # 调整图例:设置列数、位置 ax.legend( ncol=3, # 设置图例的列数,可根据标签数量调整 bbox_to_anchor=(0.5, -0.15), # 定位到X轴下方居中位置 loc='upper center' # 图例自身的锚点为上边缘居中 ) # 自动调整布局,防止图例被截断 plt.tight_layout() plt.show()
参数说明
ncol:控制图例的列数,比如设置为3就会把图例分成3列排列,可根据标签总数灵活调整;bbox_to_anchor:第一个参数0.5表示水平方向对齐图表中点,第二个参数-0.15让图例向下偏移到X轴下方,数值可根据实际显示效果微调;loc='upper center':指定图例以自身的上边缘中点为锚点,配合bbox_to_anchor实现精准定位;plt.tight_layout():自动调整图表元素的位置,确保图例完整显示在画布内。
内容的提问来源于stack exchange,提问作者vonbecker
相关产品推荐
相关产品推荐

