Python 如何在不更改绘图颜色的情况下更改颜色栏的值?

Python 如何在不更改绘图颜色的情况下更改颜色栏的值?,python,python-3.x,matplotlib,plot,colorbar,Python,Python 3.x,Matplotlib,Plot,Colorbar,我想知道是否有一种方法可以改变pcolormesh绘图中颜色条的值,而不改变绘图本身的颜色。当我手动设置颜色条的值时,它总是改变它绘制图片的方式。原图如下: 图片看起来不错,但我想让颜色条将y轴与第一个绘图相匹配。因此,我手动将vmin/vmax更改为这些值。我得到的是 很明显,它取的是图像的值,相对来说,这些值都是零。是否有一种简单的方法可以手动调整颜色栏的显示值,而不改变其绘制图像的方式 第一张图片的原始代码如下: import matplotlib.pyplot as plt from

我想知道是否有一种方法可以改变
pcolormesh
绘图中颜色条的值,而不改变绘图本身的颜色。当我手动设置颜色条的值时,它总是改变它绘制图片的方式。原图如下:

图片看起来不错,但我想让颜色条将y轴与第一个绘图相匹配。因此,我手动将
vmin/vmax
更改为这些值。我得到的是

很明显,它取的是图像的值,相对来说,这些值都是零。是否有一种简单的方法可以手动调整颜色栏的显示值,而不改变其绘制图像的方式

第一张图片的原始代码如下:

import matplotlib.pyplot as plt
from scipy import signal

CF = 2400
fs = 100

plt.figure(figsize=(15,10))

ax1 = plt.subplot(211)
plt.ylabel('Amplitude [dBm]')
plt.xlabel('Frequency [MHz]')
plt.plot(freqArray, dbmArray)

ax2 = plt.subplot(212, sharex = ax1)
f, time, Sxx = signal.spectrogram(dataArray, fs, nfft=4096)
plt.gca().set_xlim([min(f+CF), max(f+CF)])
plt.pcolormesh(f+CF, time*(1e-3), Sxx.T) 
plt.xlabel('Frequency [MHz]')
plt.ylabel('Time [ms]')
plt.gca().invert_yaxis()
plt.colorbar()

plt.show()
对于第二幅图像,唯一的区别是

plt.pcolormesh(f+CF, time*(1e-3), Sxx.T, vmin=min(dbmArray), vmax=max(dbmArray))

只需更改颜色栏的刻度标签:我相信您有XY问题。您可能希望更改颜色栏以对应于另一个绘图的y轴,但问题是,为什么首先需要这样做?这只有在两个绘图(1d和2d绘图)绘制相同的内容或至少具有可比性时才有意义。解决方案是将数据转换为具有可比维度。1d图以分贝为单位,2d图以任何
信号为单位。spectrogram()
返回。你必须使两者相互对应,这将自动解决你的问题。你的两个图可能以非线性的方式相互关联。只需更改颜色栏的刻度标签:我相信你有XY问题。您可能希望更改颜色栏以对应于另一个绘图的y轴,但问题是,为什么首先需要这样做?这只有在两个绘图(1d和2d绘图)绘制相同的内容或至少具有可比性时才有意义。解决方案是将数据转换为具有可比维度。1d图以分贝为单位,2d图以任何
信号为单位。spectrogram()
返回。你必须使两者相互对应,这将自动解决你的问题。你的两个情节可能是非线性的。