Matplotlib Colorbar缩放

时间:2018-10-26 23:16:05

标签: matplotlib colorbar

我有一个人为饱和的图,希望色条反映这一点。我当前的代码将图像饱和度很好,但是颜色栏仍显示饱和度值。我希望颜色条停在仍在绘制的最大值处,也许用箭头指示(我已经看到了'extend'关键字,但是无法应用它。)

这是我到目前为止所拥有的:

import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(-1,1,1000)
x,y = np.meshgrid(x,x)

z = np.exp(-(x**2+y**2))
plt.contourf(x,y,z,100,vmax=.75*np.max(z))
plt.colorbar()
plt.show()

我该怎么办

  1. 切断颜色栏
  2. 通过用箭头而不是常规的框形将颜色栏顶部标记来表示剪切

1 个答案:

答案 0 :(得分:1)

您正在绘制轮廓图。这意味着您可以在颜色栏中获得色阶的颜色。颜色栏的extend关键字对于这种绘图没有多大意义,因为没有任何颜色可以显示。

您当然可以设置级别,以使最后一个级别包含“其余范围”。然后,您可以为extend使用contourf关键字。

import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(-1,1,1000)
x,y = np.meshgrid(x,x)

z = np.exp(-(x**2+y**2))

levels = np.linspace(z.min(),0.75*z.max(),100)
levels[-1] = z.max()
plt.contourf(x,y,z,levels, extend="both", vmax=0.75*z.max())
plt.colorbar()
plt.show()

enter image description here

在这种情况下,似乎更合理的方法来绘制数据(无论如何足够密集)是使用pcolormesh图。

import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(-1,1,1000)
x,y = np.meshgrid(x,x)

z = np.exp(-(x**2+y**2))

plt.pcolormesh(x,y,z, vmax=0.75*z.max())
plt.colorbar(extend="both")
plt.show()

enter image description here