首页 > 解决方案 > 将 Python 中的 PSD 图旋转 90 度 - 第 2 部分

问题描述

在从此处发布的解决方案中获得大量帮助后,我现在在绘制功率谱密度图以显示 y 轴值并且 x 轴的标签出现在顶部时出现问题,如图所示这里:

在此处输入图像描述

这是我使用Sheldon向我展示的代码后得到的情节。

您能帮我将 yticks 标签与将 x 轴标题放在图表顶部一起显示吗?谢谢。

这是我到目前为止的代码:

import matplotlib.pyplot as plt
from matplotlib import transforms
import numpy as np
from numpy.fft import fft, rfft
from scipy.io import wavfile
from scipy import signal
import librosa
import librosa.display

from matplotlib.gridspec import GridSpec

input_file = (r'G:/File.wav')

fs, x = wavfile.read(input_file)
nperseg = 1025
noverlap = nperseg - 1
f, t, Sxx = signal.spectrogram(x, fs,
                               nperseg=nperseg,
                               noverlap=noverlap,
                               window='hann')

plt.psd(x, 512, fs)

def format_axes(fig):
    for i, ax in enumerate(fig.axes):
        ax.tick_params(labelbottom=False, labelleft=False)

fig = plt.figure(constrained_layout=True)

gs = GridSpec(6, 5, figure=fig)
ax1 = plt.subplot(gs.new_subplotspec((0, 1), colspan=4))

ax2 = plt.subplot(gs.new_subplotspec((1, 0), rowspan=4))

ax2.plot(-10*np.log10(Pxx),freq)
plt.xlabel("(dB/Hz)")
plt.ylabel('Frequency (Hz)')
plt.yticks(np.arange(0,22050, 5000))
plt.tick_params(axis=u'both', which=u'both',length=0)
plt.ylim([0, 22050])

plt.ylabel("")
plt.xlabel("")
# plt.xlim(0, t)

fig.suptitle("Sound Analysis")
format_axes(fig)

plt.show()

在此处输入图像描述

标签: pythonspectral-density

解决方案


推荐阅读