如何调整Matplotlib多行图例标签的图例标记垂直位置?
解决Matplotlib多行图例标签与标记第一行对齐的问题
要让多行图例标签的标记仅与第一行文本居中对齐,可以通过调整图例文本的垂直对齐方式和手柄(标记)与文本的间距实现,具体步骤如下:
- 正常绘制图形并创建图例,获取图例对象
- 将所有图例文本的垂直对齐方式设为
top,让文本以顶部为基准对齐 - 调整手柄与文本的间距,通过负数的
handletextpad值让标记上移,与第一行文本居中对齐
完整代码示例
import matplotlib.pyplot as plt x = [0,1,2,3,4,5,6,7,8,9,10] y1 = [2,2.4,3.1,3.7,4.5,5.3,5.4,6.1,6.2,6.4,7.3] y2 = [1.5,2,3,4.6,5.1,5.4,6.3,6.5,5.2,5.5,4.2] plt.plot(x,y1,label='single row label') plt.plot(x,y2,label='multiple\nrow\nlabel') # 获取图例对象 leg = plt.legend() # 设置文本垂直对齐为顶部 for text in leg.get_texts(): text.set_verticalalignment('top') # 调整手柄与文本的间距,负数让标记上移,数值可根据实际显示微调 leg.set_handletextpad(-2.5) plt.show()
说明
set_verticalalignment('top'):让多行文本的顶部与标记的垂直中线对齐set_handletextpad(-2.5):该参数控制标记与文本的水平间距,负数会让标记向文本方向移动,配合垂直对齐设置,就能实现标记与第一行文本居中的效果。你可以根据字体大小、标签行数微调这个数值,直到达到理想显示效果。
内容的提问来源于stack exchange,提问作者Jonna Symanowski
相关产品推荐
相关产品推荐

