Matplotlib 绘制 双轴 图

本文分享了如何使用Matplotlib绘制美观的双轴图,通过解读一个实例,逐步讲解了如何导入库、生成数据、设置主轴和次轴,以及调整布局。核心技巧在于`ax2=ax1.twinx()`,适合初学者理解双轴图制作方法。
摘要由CSDN通过智能技术生成

Matplotlib 绘制 双轴 图

创作背景

最近本菜鸡想要画一个 双轴图 ,可是直接使用 plt.plot() 实现不了这个功能,无奈,菜嘛,所以只能去 Matplotlib Gallery 寻找一波。
诶,你别说,还真被我给找到了。

分析思路

我找到的是 这个例子
诶,你看,这个图画的多好看,而且还符合我们的需求 — 双轴图 ,这个图还把两个轴用不同的颜色区分了一下,妙哉妙哉。
在这里插入图片描述
那让我们阅读一下它的源码,看看哪里可以供我们借鉴。

  1. 首先就是平常的不能再平常的 导包 ,导入了 MatplotlibNumpy 两个第三方库,其中 Matplotlib 用来绘图,Numpy 用来生成绘图的数据。

    import numpy as np
    import matplotlib.pyplot as plt
    

    没了这一步,下边的函数啥的都执行不了。

  2. 然后就是 生成绘图数据

    t = np.arange(0.01, 10.0, 0.01)
    data1 = np.exp(t)
    data2 = np.sin(2 * np.pi * t)
    

    一个是公式 y = e t y={e}^{t} y=et ,一个是公式 y = s i n ( 2 π t ) y=sin(2 \pi t) y=sin(2πt)
    区间均为 t ∈ [ 0.01 , 10 ] t \in [0.01, 10] t[0.01,10] ,且以 0.01 作为 间距

  3. 下一步是 设置主轴 ,并且 绘制 y = e t y={e}^{t} y=et 的图像,还要把轴和曲线设置为 红色 ,有点小秀。

    fig, ax1 = plt.subplots()
    
    color = 'tab:red'
    ax1.set_xlabel('time (s)')
    ax1.set_ylabel('exp', color=color)
    ax1.plot(t, data1, color=color)
    ax1.tick_params(axis='y', labelcolor=color)
    

    其中:

    • ax1 即为主轴,用主轴绘图,画出来的图像的 y 轴就是 左边的轴
    • set_xlabel 就是 设置 x 轴的标签 ,of course,set_ylabel 就是 设置 y 的标签 ,当然咯,是 左边的轴 的标签哦。
    • plot 就不用多说了,就是画 折线图 嘛,我相信 xdm 应该都是知道的。
    • tick_params 在这里的作用是 设置 y 轴的颜色 ,加了这个才能显示 左边的轴是红色的
  4. What’s more,当然是压轴的一步,设置次轴 ,也就是 右边的轴 ,并且绘制曲线。

    ax2 = ax1.twinx()
    
    color = 'tab:blue'
    ax2.set_ylabel('sin', color=color)
    ax2.plot(t, data2, color=color)
    ax2.tick_params(axis='y', labelcolor=color)
    

    其中

    1. ax2 = ax1.twinx() 是最为重要的一步,也是实现双轴图最为核心的一步,让我们看一下官方文档
      在这里插入图片描述 创建并返回 共享 x 轴的第二个轴 ,刻度在 右侧 。这不正是我们的需求吗?
      可能会有小伙伴问为什么是共享 x 轴 而不是共享 y 轴 呢?这个问题的话,这里建议先学一学 数学数学文化,博大精深
      这一步我们就得到了 次轴 ax2 也就是 右边的轴
    2. 然后我们就可以使用这个轴绘制第二条曲线,下边的代码可以参考 ax1 的解析。
  5. 最后,就是 绘制图像 咯。

    fig.tight_layout()
    plt.show()
    

    其中,fig.tight_layout() 是用来 自动调整子图的参数 ,因为可能由于各种原因,图片显示的不全,所以要调用这个函数调整一下。

总结

总结一下,要绘制 双轴图 的核心是 ax2 = ax1.twinx() ,用这个函数 共享 x 轴 ,以达到绘制两个不同的坐标轴的目的。




结尾

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值