#|Matplotlib 绘制 双轴 图
Matplotlib 绘制 双轴 图
-
- 创作背景
- 分析思路
- 总结
- 结尾
创作背景 【#|Matplotlib 绘制 双轴 图】最近本菜鸡想要画一个
双轴图
,可是直接使用 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 轴
,以达到绘制两个不同的坐标轴的目的。结尾 以上就是我要分享的内容,因为学识尚浅,会有不足,还请各位大佬指正。
有什么问题也可在评论区留言。
文章图片
推荐阅读
- Python数据分析(一)(Matplotlib使用)
- echart|echart 双轴图开发
- Python绘制小红花
- Figure|Figure 图像
- OpenGL|OpenGL 绘制甜甜圈深度测试、多边形偏移、裁剪、 混合
- 把知识编成网纺成布
- Python--matplotlib绘图可视化
- 4.24|4.24 使用形状生成器工具绘制星形图标 [Illustrator CC教程]
- Android|Android View 的绘制流程 03 - performLayout
- python|Python绘制冬奥吉祥物“冰墩墩”