使用python中的循环在同一页上创建子图

使用python中的循环在同一页上创建子图,python,loops,matplotlib,Python,Loops,Matplotlib,我有python代码可以工作,它可以打印正确绘制的部分“a和b”的各个图形。我修改了这个代码,所以我可以让“a”部分在一张纸上打印所有图形,而“b”部分使用子图在一张纸上打印。使用新代码时,“a”部分正常工作,但我无法让“b”部分正确绘图,即使我使用了“a”部分的相同代码,只是更改了一些值 import numpy as np import matplotlib.pyplot as plt A = 1 # Wave amplitude in meters T = 10 # Time Per

我有python代码可以工作,它可以打印正确绘制的部分“a和b”的各个图形。我修改了这个代码,所以我可以让“a”部分在一张纸上打印所有图形,而“b”部分使用子图在一张纸上打印。使用新代码时,“a”部分正常工作,但我无法让“b”部分正确绘图,即使我使用了“a”部分的相同代码,只是更改了一些值

import numpy as np
import matplotlib.pyplot as plt

A = 1  # Wave amplitude in meters
T = 10  # Time Period in secs
pi = 3.14  # Value of pi
n_w = 10 # Number of waves
wavelength = 156  # Wavelength in meters


k = (2 * pi) / wavelength
w = (2 * pi) / T

def wave_elevation(x,t):
    return A * np.cos((k * x) - (w * t))

# Part a)
x_list = np.array([0,0.25,0.5,0.75,1.0])*wavelength

for x in x_list:
    wave_ele_Val = []
    for i in np.linspace(0,T*n_w,1000):
        wave_ele_Val.append(wave_elevation(x, i))
    fig, ax = plt.subplots(figsize=(15, 5))
    plt.plot(np.linspace(0,T*n_w,1000),wave_ele_Val)
    plt.title("Wave Elevation-Time Variations @"+ str(x) + " WaveLengths")
    plt.xlabel("Time (s)")
    plt.ylabel("\u03B7")
    plt.grid()
plt.show()

# Part b)
t_list = np.array([0,0.25,0.5,0.75,1.0])*T

for t in t_list: 
    wave_ele_Val = []
    for i in np.linspace(0,wavelength*n_w,1560):
        wave_ele_Val.append(wave_elevation(i,t))
    fig, ax = plt.subplots(figsize=(15, 5))
    plt.plot(np.linspace(0,wavelength*n_w,1560),wave_ele_Val,'r')
    plt.title("Wave Elevation-Space Variations @ " + str(t) + "* Time Periods")
    plt.xlabel("x (m)")
    plt.ylabel("\u03B7")
    plt.grid()
plt.show()
这是新代码

import numpy as np
import matplotlib.pyplot as plt

A = 1  # Wave amplitude in meters
T = 10  # Time Period in secs
pi = 3.14  # Value of pi
n_w = 10 # Number of waves
wavelength = 156  # Wavelength in meters


k = (2 * pi) / wavelength
w = (2 * pi) / T

def wave_elevation(x,t):
    return A * np.cos((k * x) - (w * t))

# Part a)
x_list = np.array([0,0.25,0.5,0.75,1.0])*wavelength

fig, ax = plt.subplots(len(x_list), figsize=(15, 10))

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


# Part b)
t_list = np.array([0,0.25,0.5,0.75,1.0])*T
fig, ax = plt.subplots(len(t_list), figsize=(15, 10))

for i, t in enumerate(t_list):
    wave_ele_Val = []
    for j in np.linspace(0,wavelength*n_w,1560):
        wave_ele_Val.append(wave_elevation(t, j))
    
    ax[i].plot(np.linspace(0,wavelength*n_w,1560),wave_ele_Val,'r')
    ax[i].grid()
    ax[i].set_title("Wave Elevation-Time Variations @"+ str(x) + " WaveLengths")
    ax[i].set_xlabel("Time (s)")
    ax[i].set_ylabel("\u03B7")
plt.tight_layout()
plt.show()

使用新的代码和。这就是a&b部分的外观。并且

您已经切换了b部分中函数调用的参数<代码>波浪高程附加(波浪高程(i,t))现在是
波浪高程附加(波浪高程(t,j))
。交换t、j位置。