matplotlib中legend位置调整

44 篇文章 0 订阅
7 篇文章 0 订阅

在画一些曲线图 (line charts) 时,常常会出现多条曲线同时画在一张图上面,这时候就需要对不同的曲线进行不同的标注,以使读者能够清晰地知道每条曲线代表的含义。当你画很少的几条曲线时,这时画图命令中自动产生的legend能够基本满足你的需要,此时,你不需要做什么;但当你将很多个曲线画在一张图上时,自动产生的legend矩形框往往会覆盖住已经画出来的曲线,很不美观,这时你就需要写专门的代码对legend的位置进行精确的控制,而不能再依靠系统帮你自动控制了。

本文所讲的就是要解决如何在一张图上画多条曲线时,如何控制legend的位置。当你采用Python中的matplotlib包画图时,采用下面的代码即可控制legend的位置:

plt.legend(loc='upper center', bbox_to_anchor=(0.6,0.95),ncol=3,fancybox=True,shadow=True)

上面bbox_to_anchor被赋予的二元组中,第一个数值用于控制legend的左右移动,值越大越向右边移动,第二个数值用于控制legend的上下移动,值越大,越向上移动。上述示例代码产生的legend样例如下:
这里写图片描述

注:matlab中也可以完成legend位置的调整,也可以手工调整。

  • 10
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
matplotlib是一个用于绘制数据可视化图形的Python库,它提供了丰富的绘图函数和选项,用户可以通过简单的代码实现各种数据可视化。matplotliblegend函数用于显示图例,图例是图形的注释性文字,用于说明图形不同颜色或标记所代表的含义。 如何调整matplotlib legend位置legend函数有一个loc参数,用于指定legend位置。loc参数可以使用字符串或整数来表示不同的位置,例如: 1. 'best'或0:自适应最佳位置 2. 'upper right'或1:右上角 3. 'upper left'或2:左上角 4. 'lower left'或3:左下角 5. 'lower right'或4:右下角 6. 'right'或5:右侧 7. 'center left'或6:左侧心 8. 'center right'或7:右侧心 9. 'lower center'或8:底部心 10. 'upper center'或9:顶部心 因此,如果要将legend放置于右上角,只需将loc参数设置为1或'upper right'即可: ```python import matplotlib.pyplot as plt x = range(10) y = range(10) plt.plot(x, y, label='data') plt.legend(loc='upper right') plt.show() ``` 此外,还可以使用bbox_to_anchor参数和loc参数结合使用,指定legend位置和偏移量。例如,使用bbox_to_anchor参数将legend放置于图形右上角(1, 1)位置,然后通过loc参数移动legend,将其相对于(1, 1)位置上移0.1: ```python import matplotlib.pyplot as plt x = range(10) y = range(10) plt.plot(x, y, label='data') plt.legend(bbox_to_anchor=(1, 1), loc='upper right', borderaxespad=0., bbox_transform=plt.gcf().transFigure) plt.subplots_adjust(right=0.8) plt.show() ``` 在这个例子legend位置是由bbox_to_anchor参数决定的,而loc参数是用来移动legend相对于bbox_to_anchor位置的。borderaxespad参数可以调节legend与图形边缘的距离,bbox_transform参数将legend的坐标系转换为图形坐标系,plt.gcf().transFigure表示整个图形的坐标系。 总之,通过配置legend函数的loc参数和bbox_to_anchor参数等选项,我们可以灵活地控制legend位置和偏移量,从而实现更好的数据可视化效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值