如何修改scipy.signal.welch输出结果绘制图像的颜色
问题原因
scipy.signal.welch是纯数值计算函数,仅返回频率和功率谱密度的计算结果,不涉及绘图逻辑,给它传入color参数不会生效。- 你在
set_title后执行的ax[0].plot(color='coral')没有传入x、y坐标数据,仅会生成一条无数据的空曲线,不会修改已有曲线的颜色。
解决方法
颜色参数需要传给实际负责绘图的matplotlib方法,也就是你的代码里的ax[0].semilogy(),直接在该方法中添加color参数即可,修改后的代码如下:
import librosa.display import matplotlib.pyplot as plt import numpy as np from scipy import signal filename = "sample.wav" y, sr = librosa.load(filename) fig, ax = plt.subplots(nrows=2, ncols=1, sharex=True) f, Pxx_den = signal.welch(y, sr, nperseg=1024) # 仅修改本行,添加color参数 ax[0].semilogy(f, Pxx_den, color='coral') ax[0].set_xlabel('Hz') ax[0].set_ylabel('Power') ax[0].set_title('Power Spectral Density')
如果需要调整线宽、线型等其他绘图样式,也都是将对应参数传入semilogy方法即可。
内容的提问来源于stack exchange,提问作者Rashiq
相关产品推荐
相关产品推荐

