在使用contourf绘图时尝试调整数据范围时得到奇怪的结果
import matplotlib
import numpy as np
import matplotlib.cm as cm
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt
delta = 0.025
x = np.arange(-3.0, 3.0, delta)
y = np.arange(-2.0, 2.0, delta)
X, Y = np.meshgrid(x, y)
Z1 = mlab.bivariate_normal(X, Y, 1.0, 1.0, 0.0, 0.0)
Z2 = mlab.bivariate_normal(X, Y, 1.5, 0.5, 1, 1)
# difference of Gaussians
Z = 10.0 * (Z2 - Z1)
plt.figure()
CS = plt.contourf(X, Y, Z, vmin = 0, vmax = 3)
plt.title('Simplest default with labels')
plt.colorbar()
plt.show()
这就像颜色匹配vmin/vmax I设置,但颜色栏上显示的数字范围保持不变,而不设置vmin/vmax。
在这种情况下,我希望最终结果有一个颜色条,范围从0到3。
我们可以通过向
colorbar
发送标量可映射文件来显式设置colorbar限制。首先,标记为“答案”的回答是错误的(见我上面的评论),但帮助我提出了另外两个解决方案。
1。一个简单而直接的解决方案
在提供自定义级别的同时使用extend命令:
2。更复杂的解决方案
是在上面的答案中提供的,尽管它需要适应特定的情况,一个人可以很容易地以一个色条结束,它的水平与实际绘图中的水平不同。我发现这很危险,所以我试图用一个可以在任何上下文中安全调用的函数来包装它:
函数中的主要命令对应于千焦在他/她的答案中提出的建议,但是需要更多的行,以通过从
contourf
对象中提取所有信息来避免所有显式和潜在的错误赋值。用法:
操作要求从0到3的级别。最深的蓝色表示0以下的值,因此我发现扩展标记很有用。
可以通过调用
clippedcolorbar(CS, extend='neither')
而不是clippedcolorbar(CS)
来禁用扩展标记。相关问题 更多 >
编程相关推荐