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

3

我写了这段代码,但是我的subplot出现了错误。我不知道我的代码哪里出了问题。你能帮帮我吗?

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)

4
我们不想阅读你的所有代码,而且那些链接可能最终会失效。请将相关部分粘贴到您的问题中。 - Chase Sandmann
2个回答

15
正如错误清楚地指出的那样,您向pyplot.subplot()传递了一个非法参数。如果查看该函数的文档,您会发现它需要3个参数(可以缩成一个参数):ax = plt.subplot(2, 1, 1)ax = plt.subplot(211)
然而,您正在寻找的功能是plt.subplots()(注意结尾处的s),它生成一个图形和一个子图数组
f, (ax1, ax2) = plt.subplots(1, 2, sharey=True)
ax1.plot(x, y)
ax1.set_title('Sharing Y axis')
ax2.scatter(x, y)

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接