如何减小python3中matplotlib谱图的比例

如何减小python3中matplotlib谱图的比例,python,audio,matplotlib,spectrogram,Python,Audio,Matplotlib,Spectrogram,我正在分析.wav文件的频谱图。但是在代码最终运行之后,我遇到了一个小问题。保存700+的.wav文件的光谱图后,我意识到它们基本上看起来都一样!!!这不是因为它们是同一个音频文件,而是因为我不知道如何将绘图的比例更改为更小(这样我就可以看出差异) 我已经尝试通过查看此StackOverflow帖子来解决此问题 我将在下面显示两个不同的.wav文件的图表 这是.wav#1 这是.wav#2 信不信由你,这是两个不同的.wav文件,但它们看起来非常相似。如果规模如此之大,计算机尤其无法识别这

我正在分析.wav文件的频谱图。但是在代码最终运行之后,我遇到了一个小问题。保存700+的.wav文件的光谱图后,我意识到它们基本上看起来都一样!!!这不是因为它们是同一个音频文件,而是因为我不知道如何将绘图的比例更改为更小(这样我就可以看出差异)

我已经尝试通过查看此StackOverflow帖子来解决此问题

我将在下面显示两个不同的.wav文件的图表

这是.wav#1

这是.wav#2

信不信由你,这是两个不同的.wav文件,但它们看起来非常相似。如果规模如此之大,计算机尤其无法识别这两个.wav文件中的差异

我的代码在下面

def individualWavToSpectrogram(myAudio, fileNameToSaveTo):
print(myAudio)
#Read file and get sampling freq [ usually 44100 Hz ]  and sound object
samplingFreq, mySound = wavfile.read(myAudio)

#Check if wave file is 16bit or 32 bit. 24bit is not supported
mySoundDataType = mySound.dtype

#We can convert our sound array to floating point values ranging from -1 to 1 as follows

mySound = mySound / (2.**15)

#Check sample points and sound channel for duel channel(5060, 2) or  (5060, ) for mono channel

mySoundShape = mySound.shape
samplePoints = float(mySound.shape[0])

#Get duration of sound file
signalDuration =  mySound.shape[0] / samplingFreq

#If two channels, then select only one channel
#mySoundOneChannel = mySound[:,0]

#if one channel then index like a 1d array, if 2 channel index into 2 dimensional array
if len(mySound.shape) > 1:
    mySoundOneChannel = mySound[:,0]
else:
    mySoundOneChannel = mySound

#Plotting the tone

# We can represent sound by plotting the pressure values against time axis.
#Create an array of sample point in one dimension
timeArray = numpy.arange(0, samplePoints, 1)

#
timeArray = timeArray / samplingFreq

#Scale to milliSeconds
timeArray = timeArray * 1000

plt.rcParams['agg.path.chunksize'] = 100000


#Plot the tone
plt.plot(timeArray, mySoundOneChannel, color='Black')
#plt.xlabel('Time (ms)')
#plt.ylabel('Amplitude')
print("trying to save")
plt.savefig('/Users/BillyBobJoe/Desktop/' + fileNameToSaveTo + '.jpg')
print("saved")
#plt.show()
#plt.close()
如何修改此代码以提高图形的灵敏度,从而使两个.wav文件之间的差异更加明显

谢谢

[更新] 我试过使用
plt.xlim((0116000))

但这只是在图表的右侧添加了空白 像


我需要一种方法来改变每个单位的规模。因此,当我将x轴从0-16000更改时,图表将被填写。如果问题是:如何将x轴上的比例限制在0到1000之间,您可以执行以下操作:


plt.xlim((0,1000))

我可以使用命令plt.ylim(-1,0))对y轴执行相同的操作,以将y轴从-1缩放到0吗?这只会扩展图形,留下大量空白。我需要一种方法来改变每个单位的规模。例如,1栅格空间=类似于0。1@sreehari此答案告诉您使用较低的右轴限制值(
1000
,而不是
8000
)。如果增加限制,当然会留下一些空白。这样做的问题是,虽然我从0-1000中获得了详细信息,但从1000-8000中丢失了所有数据。@sreeharirammohan:那么,也许是了解matplotlib的好时机。您不会丢失数据,只是在当前绘图中看不到数据。我建议使用不同频率范围的子图。现在还不完全清楚你想在这里实现什么。如果你想放大,你可以增加比例,就像@Nipun的anwer建议的那样。如果要保持比例但提高分辨率,可以使用更大的打印尺寸,例如,
plt.rcParams['figure.figsize']=15,5
。当我使用代码plt.rcParams['figure.figsize']=15,5时。输出的图像看起来正是萨米人高度怀疑的;它在宽度方向上几乎要大3倍。我现在使用命令plt.figure(figsize=(35,15))使它工作