in <module> plt.tight_layout()
时间: 2024-04-01 17:38:04 浏览: 22
`plt.tight_layout()`是用来调整图形布局的函数,它可以自动调整子图参数,使之填充整个图像区域。在这个例子中,我们使用`plt.axis('equal')`来将图形的x轴和y轴的刻度等比例显示,然后再使用`plt.tight_layout()`来自动调整子图参数,使之填充整个图像区域。这样做的目的是使图形更加美观,同时避免文字和标签重叠。如果你不使用`plt.tight_layout()`,可能会出现文字和标签重叠的情况,而使用`plt.tight_layout()`可以解决这个问题。
相关问题
UserWarning: amplitude_to_db was called on complex input so phase information will be discarded. To suppress this warning, call amplitude_to_db(np.abs(S)) instead. librosa.display.specshow(librosa.amplitude_to_db(C, ref=np.max), sr=sr, x_axis='time', y_axis='cqt_note') Traceback (most recent call last): File "D:\eda\789.py", line 16, in <module> plt.colorbar(format='%+2.0f dB')
这个警告是因为在使用`librosa.amplitude_to_db`函数时传入了复数的数据,因此相位信息将被舍弃。为了避免这个警告,你可以使用`np.abs`函数将CQT变换的结果转换为幅度谱,并将其传递给`librosa.amplitude_to_db`函数。修改代码如下:
```
import librosa
import librosa.display
import matplotlib.pyplot as plt
import numpy as np
# 读取音频文件
audio_file = 'example.wav'
y, sr = librosa.load(audio_file, sr=None)
# 计算CQT变换
C = librosa.cqt(y, sr=sr)
# 可视化CQT
plt.figure(figsize=(10, 4))
librosa.display.specshow(librosa.amplitude_to_db(np.abs(C), ref=np.max), sr=sr, x_axis='time', y_axis='cqt_note')
plt.colorbar(format='%+2.0f dB')
plt.title('CQT')
plt.tight_layout()
plt.show()
```
这样就可以避免警告,并正确绘制出CQT变换的可视化图像了。
FutureWarning: waveshow() keyword argument 'x_axis' has been renamed to 'axis' in version 0.10.0. This alias will be removed in version 1.0. librosa.display.waveshow(librosa.power_to_db(S, ref=np.max), Traceback (most recent call last): File "D:\eda\123.py", line 29, in <module> librosa.display.waveshow(librosa.power_to_db(S, ref=np.max),
这个警告提示表明在 librosa.display.waveshow() 函数中,使用了已经过时的关键字参数 `x_axis`,建议使用新的参数名称 `axis`。可以在调用该函数时,使用新的参数名称来避免这个警告。例如:
```
import librosa
import matplotlib.pyplot as plt
import librosa.display
import numpy as np
filepath = 'D:\\360se6\\bishe\\古筝\\'
filename = filepath + 'gz1.wav'
# 加载音频文件并转换为 numpy 数组
y, sr = librosa.load(filename)
tempo, beats = librosa.beat.beat_track(y=y, sr=sr)
plt.figure()
S = librosa.feature.melspectrogram(y=y, sr=sr)
ax = plt.subplot(2, 1, 2)
librosa.display.waveshow(librosa.power_to_db(S, ref=np.max), axis='time', y_axis='mel')
plt.subplot(2, 1, 1, sharex=ax)
librosa.display.waveshow(y_beat_times, sr=sr, label='Beat clicks')
plt.legend()
plt.xlim(15, 30)
plt.tight_layout()
```
这样就可以避免这个警告了。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)