昨天在手机上浪费的时间又变多了,自律性有所下降,后期会坚持自律,少玩手机。
昨晚想要学习下动态图的创建,结果就遇到了一个没见过的fig,ax=plt.subplots(),不理解其中的含义,就网上找文章学习了一下。
其实这个等价与下面的代码:
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
还记得之前我们创建两个子图的的代码时这样的:
fig = plt.figure()
ax1 = fig.add_subplot(2,1,1)#选择第一个子图
##画第一幅图
plt.plot()
ax12= fig.add_subplot(2,1,2)#选择第二个子图
##画第二幅图
plt.plot()
以上就是我们分开创建figure对象和axex对象,其实是可以直接一起创建的,那就是用plt.subplots()。
其参数如下:
subplots(nrows=1, ncols=1, sharex=False, sharey=False, squeeze=True,subplot_kw=None, gridspec_kw=None, **fig_kw)
1、nrows,ncols:
子图的行列数。
2、sharex, sharey:
设置为 True 或者 ‘all’ 时,所有子图共享 x 轴或者 y 轴,
设置为 False or ‘none’ 时,所有子图的 x,y 轴均为独立,
设置为 ‘row’ 时,每一行的子图会共享 x 或者 y 轴,
设置为 ‘col’ 时,每一列的子图会共享 x 或者 y 轴。
3、squeeze:
默认为 True,是设置返回的子图对象的数组格式。
当为 False 时,不论返回的子图是只有一个还是只有一行,都会用二维数组格式返回他的对象。
当为 True 时,如果设置的子图是(nrows=ncols=1),即子图只有一个,则返回的子图对象是一个标量的形式,如果子图有(N×1)或者(1×N)个,则返回的子图对象是一个一维数组的格式,如果是(N×M)则是返回二位格式。
4、subplot_kw:
字典格式,传递给 add_subplot() ,用于创建子图。
5、gridspec_kw:
字典格式,传递给 GridSpec 的构造函数,用于创建子图所摆放的网格。
class matplotlib.gridspec.GridSpec(nrows, ncols, figure=None, left=None, bottom=None, right=None, top=None, wspace=None, hspace=None, width_ratios=None, height_ratios=None)
如,设置 gridspec_kw={‘height_ratios’: [3, 1]} 则子图在列上的分布比例是3比1。
6、**fig_kw :
所有其他关键字参数都传递给 figure()调用。
如,设置 figsize=(21, 12) ,则设置了图像大小。
7、返回值
fig: matplotlib.figure.Figure 对象
ax:子图对象( matplotlib.axes.Axes)或者是他的数组
我们可以看看ax返回的什么对象:
那么我们如何定位到每个子图呢?那就是用列表的索引形式:
然后绘图就是基于选定的子图进行作图
如ax[0,1].plot()
当然也可以像下面的方式定位子图
具体的参数解释和更多学习见以下链接,写的很详细:
https://blog.csdn.net/tz_zs/article/details/81069499
这里直接上代码小小的实验一下: