#|Matplotlib 绘制 双轴 图


Matplotlib 绘制 双轴 图

    • 创作背景
    • 分析思路
    • 总结
    • 结尾

创作背景 【#|Matplotlib 绘制 双轴 图】最近本菜鸡想要画一个 双轴图 ,可是直接使用 plt.plot() 实现不了这个功能,无奈,菜嘛,所以只能去 Matplotlib Gallery 寻找一波。
诶,你别说,还真被我给找到了。
分析思路 我找到的是 这个例子。
诶,你看,这个图画的多好看,而且还符合我们的需求 — 双轴图 ,这个图还把两个轴用不同的颜色区分了一下,妙哉妙哉。
#|Matplotlib 绘制 双轴 图
文章图片

那让我们阅读一下它的源码,看看哪里可以供我们借鉴。
  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() 是最为重要的一步,也是实现双轴图最为核心的一步,让我们看一下官方文档。
      #|Matplotlib 绘制 双轴 图
      文章图片
      创建并返回 共享 x 轴的第二个轴 ,刻度在 右侧 。这不正是我们的需求吗?
      可能会有小伙伴问为什么是共享 x 轴 而不是共享 y 轴 呢?这个问题的话,这里建议先学一学 数学数学文化,博大精深
      这一步我们就得到了 次轴 ax2 也就是 右边的轴
    2. 然后我们就可以使用这个轴绘制第二条曲线,下边的代码可以参考 ax1 的解析。
  5. 最后,就是 绘制图像 咯。
    fig.tight_layout() plt.show()

    其中,fig.tight_layout() 是用来 自动调整子图的参数 ,因为可能由于各种原因,图片显示的不全,所以要调用这个函数调整一下。
总结 总结一下,要绘制 双轴图 的核心是 ax2 = ax1.twinx() ,用这个函数 共享 x 轴 ,以达到绘制两个不同的坐标轴的目的。
结尾 以上就是我要分享的内容,因为学识尚浅,会有不足,还请各位大佬指正。
有什么问题也可在评论区留言。
#|Matplotlib 绘制 双轴 图
文章图片

    推荐阅读