Python 在同一页上创建子图

Python 在同一页上创建子图,python,Python,代码的工作原理和我想要的一样,但我无法让它在一页上绘制所有的图表。我怎样才能做副业?因此,它将看起来像图片。 尝试在循环外声明数字 导入数学 将numpy作为np导入 导入matplotlib 将matplotlib.pyplot作为plt导入 A=1#波幅(米) T=10#时间段(秒) pi=3.14#pi值 n_w=10#波数 波长=156#以米为单位的波长 k=(2*pi)/波长 w=(2*pi)/T def波浪_高程(x,t): 返回A*np.cos((k*x)-(w*t)) x_li

代码的工作原理和我想要的一样,但我无法让它在一页上绘制所有的图表。我怎样才能做副业?因此,它将看起来像图片。


尝试在循环外声明数字

导入数学
将numpy作为np导入
导入matplotlib
将matplotlib.pyplot作为plt导入
A=1#波幅(米)
T=10#时间段(秒)
pi=3.14#pi值
n_w=10#波数
波长=156#以米为单位的波长
k=(2*pi)/波长
w=(2*pi)/T
def波浪_高程(x,t):
返回A*np.cos((k*x)-(w*t))
x_list=np.阵列([0,0.25,0.5,0.75,1.0])*波长
图,ax=plt.子批次(len(x_列表),figsize=(15,5))
对于枚举中的i,x(x_列表):
波形元素值=[]
对于np.linspace中的j(0,T*n_w,1000):
波浪高程附加(波浪高程(x,j))
ax[i].绘图(np.linspace(0,T*n_w,1000),wave_ele_Val)
ax[i].grid()
plt.show()

所有配置都在

中。您需要指定所需的子批次数量:

matplotlib.pyplot.subplot(nrows=1,ncols=1,*,sharex=False,sharey=False,square=True,subplot\u kw=None,gridspec\u kw=None,**fig\u kw)

在您的情况下,这将是plt子批次(5)

plt.plot()需要更改为ax[i].plot(x,y) 其中我是你的子地块编号

还要将plt.show()移到循环之外,以便在循环结束时调用它,而不是在循环之间调用它

这是一个示例,您可以如何做到这一点:

x_list = np.array([0,0.25,0.5,0.75,1.0])*wavelength
fig, ax = plt.subplots(5, figsize=(15, 5))

for j,x in enumerate(x_list):
    wave_ele_Val = []
    for i in np.linspace(0,T*n_w,1000):
        wave_ele_Val.append(wave_elevation(x, i))
    ax[j].plot(np.linspace(0,T*n_w,1000),wave_ele_Val)
    ax[j].grid()
    ax[j].set_title("Wave Elevation-Time Variations @ " + str(x) + "WaveLengths")
    ax[j].set_ylabel("\u03B7")

fig.tight_layout()
plt.xlabel("Time (s)")
plt.show()
这给了我:


它不起作用。我想先去掉循环吗?第一个图是正确的,但其他4个图是不正确的。你的编辑对a部分有效,但我对b部分无效。我使用了与a部分相同的代码,但更改了值。我怎么做b部分?我不能让它工作。我在一页上看到了所有的5行,但是没有显示行。你能再详细一点吗?我加了一个例子,它仍然不起作用。它说:TypeError:'AxesSubplot'对象不可下标我有点无提示,因为对我来说,它工作得很好。。。(见图)
x_list = np.array([0,0.25,0.5,0.75,1.0])*wavelength
fig, ax = plt.subplots(5, figsize=(15, 5))

for j,x in enumerate(x_list):
    wave_ele_Val = []
    for i in np.linspace(0,T*n_w,1000):
        wave_ele_Val.append(wave_elevation(x, i))
    ax[j].plot(np.linspace(0,T*n_w,1000),wave_ele_Val)
    ax[j].grid()
    ax[j].set_title("Wave Elevation-Time Variations @ " + str(x) + "WaveLengths")
    ax[j].set_ylabel("\u03B7")

fig.tight_layout()
plt.xlabel("Time (s)")
plt.show()