300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > python中matplotlib绘制子图_Matplotlib-绘制子图

python中matplotlib绘制子图_Matplotlib-绘制子图

时间:2022-01-18 11:07:24

相关推荐

python中matplotlib绘制子图_Matplotlib-绘制子图

9.Matplotlib-绘制子图

image

扫码关注【牵引小哥讲Python】,关注回复【资源】领取学习资源!

原创作者:牵引小哥

微信公众号:牵引小哥讲Python

注:转载或复制请注明出处——牵引小哥

Matplotlib是一个面向对象的绘图库。在实际应用中,常常新建一个Figure对象,作为容器。再在Figure对象中创建Axes对象绘图。这样操作,可以理解为在一张画布(Figure)中创建一张图(Axes),也可以创建多个子图。而且,在对坐标轴刻度、标签等进行自定义操作时,一般也是在Axes对象进行。所以本期小哥将介绍几种简单创建Axes对象绘图的方法。

1. 方法一(add_subplot)

add_subplot(nrows, ncols, index,**kwargs),其中nrows和ncols表示将一个Figure分割为nrows行ncols列,index表示从上,从左数Axes对象所处位置编号(理解有点头疼,没关系,看例子!),**kwargs是一些其他参数,具体可参考官方说明。

import numpy as np

import matplotlib as mpl

import matplotlib.pyplot as plt

x=np.linspace(0,2*np.pi,100)

fig=plt.figure()

ax1=fig.add_subplot(221)# or (2,2,1),当nrows, ncols, index都小于10时,逗号可省略。

ax2=fig.add_subplot(222)

ax3=fig.add_subplot(212)

ax1.plot(x,np.sin(x))

ax2.plot(x,np.cos(x))

ax3.plot(x,np.sin(x)+np.cos(x))

Figure_1.png

各个子图之间的间距可使用plt.subplots_adjust()进行调整。

如果只需要创建一个Axes对象,如下。

ax1=fig.add_subplot(111)

ax1.plot(ax1.plot(x,np.sin(x)))

Figure_2.png

2. 方法二(subplots)

subplots(nrows=1, ncols=1, sharex=False, sharey=False、、、、、)该函数功能十分强大,更多参数设置可参考官方说明文档。

创建创建一个Axes对象。

fig,ax=plt.subplots()

创建多个Axes对象。

fig, axs = plt.subplots(2,2)

axs[0, 0].plot()

axs[0, 1].plot()

axs[1, 0].plot()

axs[1, 1].plot()

Figure_3.png

还可以设置坐标轴共享。

# Share a X axis with each column of subplots

plt.subplots(2, 2, sharex='col')

# Share a Y axis with each row of subplots

plt.subplots(2, 2, sharey='row')

# Share both X and Y axes with all subplots

plt.subplots(2, 2, sharex='all', sharey='all')

3.方法三(GridSpec)

gridspec.GridSpec(nrows, ncols、、、、),更多参数设置可参考官方说明文档。

import matplotlib.pyplot as plt

from matplotlib.gridspec import GridSpec

fig = plt.figure()

gs = GridSpec(2, 2)

ax1 = fig.add_subplot(gs[0])

ax2 = fig.add_subplot(gs[1])

ax3 = fig.add_subplot(gs[2])

ax4 = fig.add_subplot(gs[3])

Figure_4.png

GridSpec也可通过切片试验画布分割。

fig = plt.figure()

gs = GridSpec(3, 3, figure=fig)

ax1 = fig.add_subplot(gs[0, :])

# identical to ax1 = plt.subplot(gs.new_subplotspec((0, 0), colspan=3))

ax2 = fig.add_subplot(gs[1, :-1])

ax3 = fig.add_subplot(gs[1:, -1])

ax4 = fig.add_subplot(gs[-1, 0])

ax5 = fig.add_subplot(gs[-1, -2])

Figure_5.png

小哥Tips:在进行子图区域分割设计时的方法繁多,函数中涉及的参数较为复杂。小哥未能详细讲解,还请见谅!大家可根据小哥提供的官方链接深入学习!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。