Skip to main content
 首页 » 编程设计

python之如何在 Python 中使用 matplotlib 创建子图

2025年05月04日14soundcode

我写了这段代码,但我的子图中有错误。我现在不知道我的代码有什么问题。你能帮帮我吗?

import pywt 
import scipy.io.wavfile as wavfile 
 
import matplotlib.pyplot as plt 
 
rate,signal = wavfile.read('a0025.wav') 
time = [x /rate for x in range(0,len(signal))] 
tree = pywt.wavedec(data=signal[:1000], wavelet='db2', level=4, mode='symmetric') 
print(len(tree)) 
newTree = [tree[0]*0, tree[1]*0, tree[2]*0, tree[3]*0, tree[4]] 
recSignal = pywt.waverec(newTree,'db2') 
fig, ax = plt.subplot(2, 1) 
ax[0].plot(time[:1000], signal[:1000]) 
ax[0].set_xlabel('Czas [s]') 
ax[0].set_ylabel('Amplituda') 
ax[1].plot(time[:1000], recSignal[:1000]) 
ax[1].set_xlabel('Czas [s]') 
ax[1].set_ylabel('Amplituda') 
plt.show() 

错误:

 raise ValueError('Illegal argument(s) to subplot: %s' % (args,)) 
    ValueError: Illegal argument(s) to subplot: (2, 1) 

请您参考如下方法:

正如错误明确指出的那样,您向 pyplot.subplot() 传递了一个非法参数。如果您查看 documentation for that function ,你会看到它需要 3 个参数(可以压缩为一个):ax = plt.subplot(2, 1, 1) 或 ax = plt.subplot(211) 。

但是,您正在寻找的函数是 plt.subplots()(注意末尾的 s),which generates both a figure and an array of subplots :

f, (ax1, ax2) = plt.subplots(1, 2, sharey=True) 
ax1.plot(x, y) 
ax1.set_title('Sharing Y axis') 
ax2.scatter(x, y)