Python绘制子图及子图刻度的变换等问题

  1. 涉及到图的对比会用到子图形式展示,先看看效果
  2. 绘制代码如下
accuracy_alexnet_clef = [78.05, 78.43, 78.65, 78.61, 78.69]
accuracy_resnet_clef  = [84.56, 84.84, 85.07, 85.01, 85.13]
accuracy_alexnet_office10 = [87.30, 87.57, 87.78, 87.72, 87.50]
accuracy_resnet_office10  = [96.31, 96.35, 96.62, 96.43, 96.15]
orders = ['2', '3', '5', '10', '20']
names = ['alexnet', 'resnet']

# 创建两幅子图
f, ax = plt.subplots(2,1,figsize=(6, 8))
# 第一根柱子偏移坐标
x = [i for i in range(len(orders))]
# 第二根柱子偏移坐标
x1 = [i + 0.35 for i in range(len(orders))]
# 两幅子图之间的间距
plt.subplots_adjust(wspace =0, hspace =0.4)

# 选择第一幅图
figure_1 = ax[0]

# 设置x轴偏移和标签
figure_1.set_xticks([i+0.15 for i in x])
figure_1.set_xticklabels(orders)

# 设置y轴的范围
figure_1.set_ylim(bottom=77,top=86)

# 绘制柱状图,x表示x轴内容,accuracy_alexnet_clef表示y轴的内容,alpha表示透明度,width表示柱子宽度
# label表示图列
figure_1.bar(x, accuracy_alexnet_clef, alpha=0.7, width = 0.35, facecolor = '#4c72b0', label='Alexnet')
figure_1.bar(x1, accuracy_resnet_clef, alpha=0.7, width = 0.35, facecolor = '#dd8452', label='Resnet')

figure_1.set_ylabel('Accuracy%') # 设置y轴的标签
figure_1.set_xlabel('Order') # 设置x轴的名称
figure_1.set_title('Alexnet') # 设置图一标题名称
figure_1.legend() # 显示图一的图例


# 选择第二幅图
figure_2 = ax[1]
figure_1.set_xticks([i+0.15 for i in x])
figure_1.set_xticklabels(orders)

figure_2.set_ylim(bottom=77,top=100)
figure_2.bar(x, accuracy_alexnet_office10,alpha=0.7,width = 0.35,facecolor = '#c44e52', label='Alexnet')
figure_2.bar(x1, accuracy_resnet_office10,alpha=0.7,width = 0.35,facecolor = '#5f9e6e', label='Alexnet')


# figure_2.bar(orders, accuracy_resnet_clef,alpha=0.7,width = 0.35,facecolor = '#dd8452')
figure_2.set_ylabel('Accuracy%')
figure_2.set_xlabel('Order')
figure_2.set_title('Resnet')
figure_2.legend()

f.suptitle('ImageCLEF_DA') # 设置总标题
plt.show()
### 使用 Python 绘制波形和频谱 以下是实现绘制波形和频谱的完整方法及其代码示例: #### 波形绘制 波形展示了音频信号随时间变化的振幅。可以利用 `librosa` 和 `matplotlib` 库加载音频数据并绘制其波形。 ```python import librosa import librosa.display import matplotlib.pyplot as plt # 音频文件路径 file_path = r"D:\daku\波形频谱\NothingComparesToYou.mp3" # 加载音频文件 y, sr = librosa.load(file_path, sr=None) # 创建新的形窗口 plt.figure(figsize=(14, 6)) # 绘制波形 librosa.display.waveshow(y, sr=sr) plt.title('Waveform') plt.xlabel('Time (seconds)') plt.ylabel('Amplitude') # 显示像 plt.tight_layout() plt.show() ``` 此部分代码实现了从指定路径加载音频文件,并通过 `waveshow()` 方法展示其波形[^1]。 --- #### 频谱绘制 频谱显示了音频信号在不同频率下的能量分布情况,通常通过对信号进行短时傅里叶变换(STFT)来计算得到。 ```python import numpy as np # 计算短时傅里叶变换 D = librosa.stft(y) # 转换为分贝刻度 S_db = librosa.amplitude_to_db(np.abs(D), ref=np.max) # 创建新的形窗口 plt.figure(figsize=(14, 6)) # 绘制频谱 librosa.display.specshow(S_db, sr=sr, x_axis='time', y_axis='log') plt.colorbar(format='%+2.0f dB') plt.title('Spectrogram') plt.xlabel('Time (seconds)') plt.ylabel('Frequency (Hz)') # 显示像 plt.tight_layout() plt.show() ``` 该代码片段完成了对音频信号的 STFT 处理以及将其转化为分贝单位表示的能量矩阵,最终调用 `specshow()` 函数完成可视化操作[^1]。 --- #### 完整代码整合 为了方便对比查看,可将两者放在同一张表的不同中呈现: ```python import librosa import librosa.display import matplotlib.pyplot as plt import numpy as np # 文件路径 file_path = r"D:\daku\波形频谱\NothingComparesToYou.mp3" # 加载音频文件 y, sr = librosa.load(file_path, sr=None) # 创建新形窗口 plt.figure(figsize=(14, 8)) # 1:波形 plt.subplot(2, 1, 1) librosa.display.waveshow(y, sr=sr) plt.title('Waveform') plt.xlabel('Time (seconds)') plt.ylabel('Amplitude') # 2:频谱 D = librosa.stft(y) S_db = librosa.amplitude_to_db(np.abs(D), ref=np.max) plt.subplot(2, 1, 2) librosa.display.specshow(S_db, sr=sr, x_axis='time', y_axis='log') plt.colorbar(format='%+2.0f dB') plt.title('Spectrogram') plt.xlabel('Time (seconds)') plt.ylabel('Frequency (Hz)') # 自动调整布局并显示像 plt.tight_layout() plt.show() ``` 以上代码综合了前两部分内容,在单个界面下分别展现了音频的波形与频谱特性[^1]。 --- #### 关于傅里叶变换的应用说明 傅里叶变换是一种重要的工具,用于分析信号中的频率组成。对于语音处理领域而言,它能够揭示出特定时间段内的主要频率成分,从而帮助区分不同类型的声音特征[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

l8947943

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值