itp*_*pdg 6 python numpy matplotlib colorbar contourf
我正在尝试使用 matplotlib (当然还有 numpy)绘制轮廓图。它有效,它绘制了它应该绘制的内容,但不幸的是我无法设置颜色条范围。问题是我有很多图,并且需要所有图都具有相同的颜色条(相同的最小值和最大值,相同的颜色)。我复制并粘贴了在互联网上找到的几乎所有代码片段,但没有成功。到目前为止我的代码:
import numpy as np;
import matplotlib as mpl;
import matplotlib.pyplot as plt;
[...]
plotFreq, plotCoord = np.meshgrid(plotFreqVect, plotCoordVect);
figHandler = plt.figure();
cont_PSD = plt.contourf(plotFreq, plotCoord, plotPxx, 200, linestyle=None);
normi = mpl.colors.Normalize(vmin=-80, vmax=20);
colbar_PSD = plt.colorbar(cont_PSD);
colbar_PSD.set_norm(normi);
#colbar_PSD.norm = normi;
#mpl.colors.Normalize(vmin=-80, vmax=20);
plt.axis([1, 1000, -400, 400]);
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,颜色条规范有三种不同的行,但它们都不起作用。范围仍然是自动设置的...我的意思是其他一切都正常,为什么颜色条不行?我什至没有收到错误或警告。
谢谢,itpdg
编辑1:图片,与plt.clim(-80,20):
添加此后plt.colorbar():
plt.clim(minimal_value, maximal_value)
Run Code Online (Sandbox Code Playgroud)
对于等值线图,添加参数 vmin 和 vmax:
cont_PSD = plt.contourf(plotFreq, plotCoord, plotPxx, 200, linestyle=None,vmin=minimal_value,vmax=maximal_value)
Run Code Online (Sandbox Code Playgroud)
您完整的代码应该像这样工作:
import numpy as np;
import matplotlib as mpl;
import matplotlib.pyplot as plt;
[...]
plotFreq, plotCoord = np.meshgrid(plotFreqVect, plotCoordVect);
figHandler = plt.figure();
cont_PSD = plt.contourf(plotFreq, plotCoord, plotPxx, 200, linestyle=None,vmin=minimal_value,vmax=maximal_value);
plt.colorbar()
plt.clim(minimal_value,maximal_value)
plt.show()
Run Code Online (Sandbox Code Playgroud)