在 matplotlib 中绘制频谱图颜色条的问题
Problem plotting spectrogram colorbar in matplotlib
我想使用输入数据制作子图
我认为这只是将频谱图的“可映射”传递给 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()
的问题,这样它就知道为什么制作色条了。棘手的是它有点隐藏在频谱图的属性中 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
.