Matplotlib 绘图 双轴双图例 图

Matplotlib 绘图 双轴双图例 图

创作背景

本菜鸡最近帮一个朋友画图,碰到个问题,就是需要 同一个图中要画两条折线 ,而且 还得有两个 y 轴 ,并且 显示两个图例
好家伙,乍一听还挺头大,不过细分下来也不算难。

分析思路

  1. 首先就是要 在一个图中画两条折线 ,这个不难,因为如果要传入两个 y 轴的数据的话,Matplotlib 就会自动画出来两条折线。

  2. 但第二个就有点难度,要 画双轴 ,这个可以借鉴我的 这篇博客

  3. 这个让我犯了难,因为直接使用 plt.legend() 函数的话 只能显示次轴图的图例 ,导致我怎么都弄不出来,所以我还是去 Matplotlib Gallery 寻找一波。最后我找到的是 这个例子
    看一下效果。
    在这里插入图片描述
    四个字,花里胡哨 ,不过确实显示了两个标签,所以我们还是可以借鉴一下。

    还是分析源码,但这次直奔主题,精髓在这一句:

    ax.legend((l2, l4), ('oscillatory', 'damped'), loc='upper right', shadow=True)
    

    使用的是 legend 函数,平常我们都是直接使用的 plt.legend() ,然后就会显示所有图像的图例。但那时候并不像现在一样绘制 双轴图 ,所以我们可以学习例子中展示的源码,给 legend 函数 传参

    让我们看一下legend 函数的官方文档
    在这里插入图片描述

    1. 第一种情况就是常用的情况,不多赘述。

    2. 第二种情况就是在绘图的函数中不设置 label 参数,而在 legend 函数中传入一个 包含每个图的图例的列表 ,因为例子只有一个图,所以列表也只有一个元素。

    3. 第三种情况就是我们现在遇到的情况,需要显式地定义图例,就需要传入两个参数:

      一个是 图对象列表,也就是包含调用 plot 函数后返回的对象的列表
      另一个是 图例列表 ,也就是包含需要显式定义的图例的列表

      将这两个参数传入 legend 函数后就可以达成目标

结果展示

展示一下我画的图。
在这里插入图片描述




结尾

以上就是我要分享的内容,因为学识尚浅,会有不足,还请各位大佬指正。
有什么问题也可在评论区留言。
在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值