本系列文章配套代码获取有以下两种途径:
-
通过百度网盘获取:
链接:https://pan.baidu.com/s/1jG-rGG4QMuZu0t0kEEl7SA?pwd=mnsj
提取码:mnsj
-
前往GitHub获取:
https://github.com/returu/Data_Visualization
函数语法:
fig,ax=plt.subplots(nrows=1,
ncols=1,
sharex=False,
sharey=False,
**fig_kw
)
-
nrows:子图的行数,默认是1。 -
ncols:子图的列数,默认是1。 -
sharex、sharey:是否共享x轴或y轴(所有子图应使用相同的x轴、y轴刻度,调整xlim、ylim将影响所有子图),取值包括:none、all、row、col,默认为False。 -
squeeze:是否挤压,默认为True。如果为True,则可能情况如下:如果构造一个子图,则建立单个Axes对象返回;如果建立(N×1)或(1×N)的子图布局,返回一维数组Axes对象;如果建立(N×M)的子图布局(N>1,M>1),返回二维数组Axes对象。如果是False,则不进行挤压,返回的是含Axes对象的2D数组。 -
subplot_kw:带有传递给add_subplot用于建立每个子图调用的关键词字典,如subplot_kw={‘aspect’:’equal’},相当于设定x轴和y轴单位长度相同。 -
gridspec_kw:带有传递给构造函数的关键词字典,GridSpec构造函数可用于建立放置子图的网格。 -
**fig_kw:额外的关键词参数,可用于pyplot.figure()函数的调用。上述函数的回传值是图表对象,是对象的数组。
subplots()函数可以方便地创建子图网格,该函数会创建一个新的窗口图表Figure对象并返回一个包含创建的子图axes对象的NumPy数组:
fig, axes = plt.subplots(2, 3)
axes
array([[<AxesSubplot:>, <AxesSubplot:>, <AxesSubplot:>],
[<AxesSubplot:>, <AxesSubplot:>, <AxesSubplot:>]], dtype=object)
可以像二维数组一样对axes数组进行索引。例如,axes[0,1] 指的是第一行第二列的子图。
也可以通过以下方式遍历子图:
for ax in axes.flat:
print(ax)
返回结果如下:
AxesSubplot(0.125,0.53;0.227941x0.35)
AxesSubplot(0.398529,0.53;0.227941x0.35)
AxesSubplot(0.672059,0.53;0.227941x0.35)
AxesSubplot(0.125,0.11;0.227941x0.35)
AxesSubplot(0.398529,0.11;0.227941x0.35)
AxesSubplot(0.672059,0.11;0.227941x0.35)
子图配置实例:
x = np.linspace(0 , 10 , 100)
fig , ax = plt.subplots(2,2,figsize=(8,8))
ax[0,0].set_title("子图1")
ax[0,0].plot(x+5,np.power(x,1)*8)
ax[0,1].set_title("子图2")
ax[0,1].plot(x+8,np.power(x,2)+20)
ax[1,0].set_title("子图3")
ax[1,0].plot(x*2,np.power(x,0.5)*30)
ax[1,1].set_title("子图4")
ax[1,1].plot(x,np.power(x,4)/100)
plt.tight_layout()
plt.show()
x = np.linspace(0 , 10 , 100)
fig , ax = plt.subplots(2,2,figsize=(8,8),sharex=True,sharey=True) # 共享坐标轴
ax[0,0].set_title("子图1")
ax[0,0].plot(x+5,np.power(x,1)*8)
ax[0,1].set_title("子图2")
ax[0,1].plot(x+8,np.power(x,2)+20)
ax[1,0].set_title("子图3")
ax[1,0].plot(x*2,np.power(x,0.5)*30)
ax[1,1].set_title("子图4")
ax[1,1].plot(x,np.power(x,4)/100)
# 遍历子图
for a in ax.flat:
a.set(xlabel="X轴" ,ylabel="Y轴" ) # 添加轴标签
a.label_outer() # 隐藏子图内侧的刻度标记和标签
plt.tight_layout()
plt.show()
https://matplotlib.org/stable/
本篇文章来源于微信公众号: 码农设计师