matplotlib绘图原理
背景:
平时画图基本上使用的是python,而在之前都是需要什么图然后就在网上找相应的代码,虽然也能绘制,但是,没有从本质上知道python是如何实现的,这对于后面的进阶不利。因此,下面着手从matplotlib绘图本质入手,学习绘图
注:转载请标明出处,谢谢!
1.首先理解画布,坐标系,坐标轴三个概念
画图首先需要创建一个画布,供用户进行可视,figure起到的作用就是如此。接着,有了画布,我们需要在上面作图,但是如果需要在这个画布上面画不同的要素图,这可以理解为需要在这张画布上面在不同坐标系下绘制图像,这就引出了坐标系axes;接着,有了坐标系的概念,也就有了坐标轴的概念axis
总结:一个画布(figure)上可以绘制多个坐标系下的图像,而每个坐标系下都有坐标轴(坐标轴可以是二维,三维等)
注意:matplotlib中,画布与坐标系不能显示的可见,用户能够看到的仅仅是一个个坐标轴下的图形。
1.1画布:
画板上准备一张画布
1.2坐标系
简单的理解成一般的二维平面坐标系,三维坐标系
1.3坐标轴
常规的x,y,z坐标轴
下图形象展示了这三个要素
import matplotlib.pyplot as plt
# 隐式创建画布,坐标轴
plt.plot((1, 2, 3), (2, 4, 6))
plt.show()
import matplotlib.pyplot as plt
# 显示创建画布,坐标轴
fig, ax = plt.subplots()
ax.plot((1, 2, 3), (2, 4, 6))
plt.show()
# 创建多个坐标系
import matplotlib.pyplot as plt
fig, ax = plt.subplots(1, 3)
(ax1, ax2, ax3) = ax
ax1.plot((1, 2, 3), (2, 4, 6))
ax2.plot((1, 2, 3), (2, 4, 6))
ax3.plot((1, 2, 3), (2, 4, 6))
plt.show()
我们需要知道的是,在matplotlib中画图前需要构建画布与坐标系。
创建画布的方式有两种:
隐式创建
显式创建
显式创建可以从python面向对象的角度理解(即创建了一个画布、坐标系实例)
注意:plt会默认的在最新的坐标轴上绘制图像
# 创建多个坐标系
import matplotlib.pyplot as plt
fig, ax = plt.subplots(1, 3)
(ax1, ax2, ax3) = ax
# 如果要在第二个坐标系下画图使用plt的话,会出现下列问题
plt.plot((1, 2, 3), (2, 4, 6))
plt.show()
可以发现,它直接在最后一个(最新的)坐标轴进行绘图,而非在第二个坐标系。因此,需要使用ax2.plot((1, 2, 3), (2, 4, 6))
# 创建多个坐标系
import matplotlib.pyplot as plt
fig, ax = plt.subplots(1, 3)
(ax1, ax2, ax3) = ax
# 如果要在第二个坐标系下画图使用plt的话,会出现下列问题
ax2.plot((1, 2, 3), (2, 4, 6))
plt.show()
参考资料:
matplotlib绘图的核心原理讲解(超详细)_http://suo.im/678fco_数据分析与统计学之美的博客-CSDN博客