我在mayavi中创建了一个自定义色彩映射,以匹配matplotlib中的seismic_r色彩映射。我可以绘制颜色条,但是我无法标记它。我已经尝试了谷歌搜索的一些建议,比如
mesh.module_manager.scalar_lut_manager.show_scalar_bar = True
然而它似乎不起作用。 如果需要,我可以使问题更具可重复性。
import matplotlib.cm as cm
import mayavi.mlab as mlab
seismic=plt.cm.seismic_r(np.linspace(0,1,255))*255
mesh=mlab.mesh(xi[:k],yi[:k],-zi[:k],scalars=res[:k],vmin=0.5,vmax=3.5)
mlab.points3d(stx,sty,np.zeros_like(stx),color=(0,0,0),mode='sphere',scale_factor=2500)
mesh.module_manager.scalar_lut_manager.lut.table = seismic
mlab.colorbar(orientation='vertical',nb_labels=4,label_fmt='%.1f')
mlab.draw()
谢谢
答案 0 :(得分:0)
我认为您处在正确的轨道上,唯一的问题是您忘记发送对要显示其颜色条的对象的引用。显示图例的方法需要引用对象,否则它不知道显示图例的目的。这似乎有点违反直觉,特别是在场景中只有一个对象的情况下,但是您需要考虑可以同时显示多个对象,然后图例对它们来说会有所不同。
以下代码显示了如何在Mayavi中正确显示对象颜色图的图例:
import numpy as np
from mayavi import mlab
t = np.linspace(0, 4 * np.pi, 20)
x = np.sin(2 * t)
y = np.cos(t)
z = np.cos(2 * t)
s = 2 + np.sin(t)
points = mlab.points3d(x, y, z, s, colormap="blue-red", scale_factor=.25)
mlab.colorbar(object=points, title="Points in Mayavi")
mlab.show()
希望这会有所帮助。