python - Mayavi 修复了所有场景的颜色条
问题描述
我正在寻找一种方法来保持颜色条(和场景上的颜色)不变,而不管我显示的数据是什么(例如,假设我想要颜色从 0 到 10,当前设置 mayavi 将根据数据调整颜色,所以首先情节将是从 0 到 1,第二个 0 到 2 等)。归一化(vmin,vmax)不是选项,因为它们只是对数据进行归一化。
#Minimum working example
from numpy import sin, cos, mgrid, pi, sqrt
from mayavi import mlab
mlab.figure(fgcolor=(0, 0, 0), bgcolor=(1, 1, 1))
u, v = mgrid[- 0.035:pi:0.01, - 0.035:pi:0.01]
X = 2 / 3. * (cos(u) * cos(2 * v)
+ sqrt(2) * sin(u) * cos(v)) * cos(u) / (sqrt(2) -
sin(2 * u) * sin(3 * v))
Y = 2 / 3. * (cos(u) * sin(2 * v) -
sqrt(2) * sin(u) * sin(v)) * cos(u) / (sqrt(2)
- sin(2 * u) * sin(3 * v))
Z = -sqrt(2) * cos(u) * cos(u) / (sqrt(2) - sin(2 * u) * sin(3 * v))
for i in range(1,10):
S = sin(u)*i
mlab.mesh(X, Y, Z, scalars=S, colormap='YlGnBu', )
mlab.view(.0, - 5.0, 4)
mlab.colorbar(orientation='vertical')
mlab.show()
mlab.close(all=True)
解决方案
您需要修复 lut 的数据范围
# get the current lut manager
lut_manager = mlab.colorbar(orientation='vertical')
# fix the range
lut_manager.data_range = (0, 10)
这样,比例将始终从零到十,如果您没有在所有范围内都有值,通常这可能会出现问题(颜色可能非常相似)
推荐阅读
- flutter - 当我在颤振中使用空安全性定义特定列表的模型时,空值检查运算符用于空值
- rust - Rust 将两个不同的结构视为一个
- azure - 当我尝试为 ProfileMFAPhoneNumber 上传 B2C 自定义策略时出现验证错误
- typescript - where(property IN array) 在 typeorm 查询生成器中如何工作?
- c++ - 关于 lambda 表达式中可变关键字的困惑
- python - 使用python为帖子数量添加最大限制
- android - NSSystemClockDidChangeNotification 是否收到有关自动时区更新的通知(无需手动干预。例如,当用户正在旅行时)?
- docker - 在 docker 容器中本地执行 WDIO-Test 会引发错误:@wdio/cli:utils: A service failed in the 'onPrepare' hook
- javascript - JQuery Onclick event.target 返回错误的元素
- csv - 如何使用 Julia CSV 包 rowWriter?