我有一个人为饱和的图,希望色条反映这一点。我当前的代码将图像饱和度很好,但是颜色栏仍显示饱和度值。我希望颜色条停在仍在绘制的最大值处,也许用箭头指示(我已经看到了'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()
我该怎么办
答案 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()
在这种情况下,似乎更合理的方法来绘制数据(无论如何足够密集)是使用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()