2011-04-29 112 views
25

当使用matplotlib和等高线图时,我无法让颜色条显示为我想要的。我已经阅读了许多类似的例子,但仍然无法得到我想要的。Python/Matplotlib - 颜色条范围和显示值

在下面的图片中,我想改变两件事情。我想要在颜色栏上显示最小值和最大值(最大值应为2.0,最小值为-0.1)。这两个值应该在色条的边缘。另外,我希望颜色条在每个颜色转换处显示值。例如。在下面的图中,在2.1和1.8之间,有另一个颜色转换,其中不显示该值。

任何人都可以帮我吗?我想我可能需要使用规范,但目前为止还没有效果。

感谢,

enter image description here

代码:

import numpy as np 
import matplotlib.pyplot as plt 

xi = np.array([0., 0.5, 1.0]) 
yi = np.array([0., 0.5, 1.0]) 
zi = np.array([[0., 1.0, 2.0], 
       [0., 1.0, 2.0], 
       [-0.1, 1.0, 2.0]]) 

plt.contour(xi, yi, zi, 15, linewidths=0.5, colors='k') 
plt.contourf(xi, yi, zi, 15, cmap=plt.cm.jet) 
plt.colorbar() 
plt.show() 

回答

27

如果我正确你想要什么了解,我想这应该这样做:

import numpy as np 
import matplotlib.pyplot as plt 

xi = np.array([0., 0.5, 1.0]) 
yi = np.array([0., 0.5, 1.0]) 
zi = np.array([[0., 1.0, 2.0], 
       [0., 1.0, 2.0], 
       [-0.1, 1.0, 2.0]]) 

v = np.linspace(-.1, 2.0, 15, endpoint=True) 
plt.contour(xi, yi, zi, v, linewidths=0.5, colors='k') 
plt.contourf(xi, yi, zi, v, cmap=plt.cm.jet) 
x = plt.colorbar(ticks=v) 
print x 
plt.show() 

enter image description here

+0

正是我想要的,谢谢! – 2011-04-29 18:15:54