在matplotlib中绘制频谱图颜色条的问题[重复]

Posted

技术标签:

【中文标题】在matplotlib中绘制频谱图颜色条的问题[重复]【英文标题】:Problem plotting spectrogram colorbar in matplotlib [duplicate] 【发布时间】:2021-10-10 17:27:40 【问题描述】:

我想使用输入数据制作子图

【问题讨论】:

【参考方案1】:

我认为这只是将频谱图的“可映射”传递给plt.colorbar() 的问题,以便它知道制作颜色条的目的。棘手的是它有点隐藏在频谱图Axes的一个属性中:

fig, (ax1, ax2, ax3) = plt.subplots(3, sharex=True)
ax1.plot(time, data1[0].data)
ax2.plot(time, data2.data)
spec = data2.spectrogram(axes=ax3,  # <-- Assign a name.
                         show=True,
                         samp_rate=20,
                         per_lap=0.5,
                         wlen=30,
                         log=True,
                         cmap='plasma',  # <-- Don't use jet :)
                         clip=(0.05, 0.2),
                        )
plt.xlabel('Time')
plt.ylabel('Frequency')

# More flexibility with the positioning:
cbar_ax = fig.add_axes([0.2, 0.0, 0.6, 0.05])  # Left, bottom, width, height.
cbar = fig.colorbar(spec.collections[0],  # <-- Get the mappable.
                    cax=cbar_ax,
                    orientation='horizontal')
cbar.set_label('Colorbar label')

plt.show()

这还显示了如何将颜色条放置在您想要的位置。我把你的颜色图改成了plasma,因为you shouldn't use jet

【讨论】:

抱歉,plt.colorbar() 想要的可映射对象似乎在一个属性中。我试过spec.images[0],但由于某种原因那个东西是空的,结果它潜伏在spec.collections[0]中。我觉得obspy 可以让这更方便。 我编辑了答案以显示如何以不同的方式定位它。如果您需要更多帮助,您可能应该问另一个问题。

以上是关于在matplotlib中绘制频谱图颜色条的问题[重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用 matplotlib 创建自己的颜色图并绘制颜色比例

如何使用颜色图绘制 matplotlib 线图?

学会Python-Matplotlib可视化,快速完成数据分析——自定义颜色绘制精美统计图

在 matplotlib 中更改颜色条的字体大小

Python使用matplotlib绘制数据去重前后的柱状图对比图(在同一个图中显示去重操作之后同一数据集的变化情况)

Matplotlib风格与样式