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

那让我们阅读一下它的源码,看看哪里可以供我们借鉴。
-
首先就是平常的不能再平常的
导包,导入了Matplotlib和Numpy两个第三方库,其中Matplotlib用来绘图,Numpy用来生成绘图的数据。import numpy as np import matplotlib.pyplot as plt没了这一步,下边的函数啥的都执行不了。
-
然后就是
生成绘图数据。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作为间距。 -
下一步是
设置主轴,并且绘制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 轴的颜色,加了这个才能显示左边的轴是红色的。
-
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)其中
ax2 = ax1.twinx()是最为重要的一步,也是实现双轴图最为核心的一步,让我们看一下官方文档。
创建并返回 共享 x 轴的第二个轴,刻度在右侧。这不正是我们的需求吗?
可能会有小伙伴问为什么是共享x 轴而不是共享y 轴呢?这个问题的话,这里建议先学一学数学,数学文化,博大精深。
这一步我们就得到了次轴 ax2也就是右边的轴。- 然后我们就可以使用这个轴绘制第二条曲线,下边的代码可以参考
ax1的解析。
-
最后,就是
绘制图像咯。fig.tight_layout() plt.show()其中,
fig.tight_layout()是用来自动调整子图的参数,因为可能由于各种原因,图片显示的不全,所以要调用这个函数调整一下。
总结
总结一下,要绘制 双轴图 的核心是 ax2 = ax1.twinx() ,用这个函数 共享 x 轴 ,以达到绘制两个不同的坐标轴的目的。
结尾
以上就是我要分享的内容,因为学识尚浅,会有不足,还请各位大佬指正。
有什么问题也可在评论区留言。

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

被折叠的 条评论
为什么被折叠?



