在colorbar中结束刻度 - matplotlib

时间:2013-07-26 13:13:20

标签: python numpy matplotlib scipy enthought

我正在尝试使用matplotlib库在Python中绘制颜色条。情节效果很好,但颜色条不会显示颜色条上的结束标记。

使用以下命令正确绘制颜色条,但我只有-1.6到+1.6的刻度(顶部和底部刻度不存在)。我的数据范围是-2到+2。

fig.colorbar(surf, shrink=1, aspect=12)

如下图所示:

colorbar

我尝试使用命令:

cbar.set_ticks([-2,-1,0,1,2]);

但这也未能得到正确的结果。

更新:

我尝试使用ticks = [ - 2,0,2]参数,但这也不起作用。这是我的绘图代码的片段:

from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter
import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()
ax = fig.gca(projection='3d')
CHI = np.linspace(-45, 45, 35);
M = np.linspace(0, 1, 35)
CHI, M = np.meshgrid(CHI, M)
R = 2*M*np.sin(  2 * np.deg2rad(CHI) )
surf = ax.plot_surface(CHI, M, R, rstride=1, cstride=1, cmap=cm.hsv,linewidth=0, antialiased=False)
ax.set_xlim(-45,45)
cbar = plt.colorbar(surf, shrink=1, aspect=12, ticks=[-2,-1,0,1,2])
plt.show()

这会产生以下情节: PLot wrong bar

如图所示,colorbar缺少结束标记,即。 -2和2

2 个答案:

答案 0 :(得分:4)

您应该可以在调用ticks时设置plt.colorbar参数:

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots()
cmap = plt.get_cmap('jet')
data = np.random.randint(-2,3, size=(10,10))
im = ax.imshow(data, interpolation='nearest', cmap=cmap)
cbar = plt.colorbar(im, ticks=[-2,-1,0,1,2])
plt.show()

enter image description here

答案 1 :(得分:3)

from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter
import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()
ax = fig.gca(projection='3d')
CHI = np.linspace(-45, 45, 35);
M = np.linspace(0, 1, 35)
CHI, M = np.meshgrid(CHI, M)
R = 2*M*np.sin(  2 * np.deg2rad(CHI) )
surf = ax.plot_surface(CHI, M, R, rstride=1, cstride=1, cmap=cm.hsv,linewidth=0, antialiased=False)
surf.set_clim([-2, 2]) # <- this is the important line
ax.set_xlim(-45,45)
cbar = plt.colorbar(surf, shrink=1, aspect=12, ticks=[-2,-1,0,1,2])
plt.show()

自动缩放出现问题(我会猜测浮点相等测试的问题),如果你明确地将攀爬设置为[-2, 2]则可行。