- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 python 和 mayavi2 进行 3D 绘图。我正在使用 mesh 命令绘制一个球体,现在我想为球体的某些面板着色不同的颜色。看起来这就是 mask 选项的用途,但我无法让它工作(我只是让整个球体重新着色)。
http://docs.enthought.com/mayavi/mayavi/auto/mlab_helper_functions.html#mayavi.mlab.mesh“掩码: bool 掩码数组,用于抑制某些数据点”
我使用:
mesh(X,Y,Z, color = (1,1,1), opacity=0.5)
将整个球体涂成白色,然后
mesh(X,Y,Z, color = (1,0,1), mask = active_region, opacity=0.5)
将某些部分涂成紫色,其中
active_region = [[False False False False False False True]
[False False False False False False True]
[False False False False False True True]
[False False False True True True True]
[False False True True True True True]
[False False False True True True True]
[False False False False False False True]]
但这会产生一个完全紫色的球体。 X、Y、Z 都是形状为 (7,7) 的数组,就像 active_region 一样。我做错了什么?
最佳答案
mask 基于标量起作用,而不是在您设置纯色时起作用。试试这个:
import numpy as np
m = mesh(X,Y,Z, mask=active_region, opacity=0.5)
m.mlab_source = ones_like(X)
掩码通过将标量设置为被掩码的 Nan 来工作。绘制的几何图形相同,但如果标量是 Nan 的,则不会显示 mask 区域。
无论如何,这里有一个完整的工作示例供您引用:
import numpy as np
phi, theta = np.mgrid[0:np.pi:100j, 0:2 * np.pi:100j]
x = np.sin(phi) * np.cos(theta)
y = np.sin(phi) * np.sin(theta)
z = np.cos(phi)
mask = np.zeros_like(x).astype(bool)
mask[::5] = True
mask[:,::5] = True
from mayavi import mlab
mlab.mesh(x, y, z, scalars=z, mask=mask)
请注意,您不需要提供标量,只是如果您提供明确的颜色,则不会有 mask 。此外,此处的标量仅设置为 z
,您可以使用任何兼容的数组,甚至可以通过 ones_like(X)
使用常量值。
事实证明,如果您有一个常量标量,VTK 5.6 似乎无法正确掩盖您的观点,如果您有 VTK 5.10,您可以执行以下操作:
m = mlab.mesh(x, y, z, scalars=scalars, mask=mask)
m.module_manager.scalar_lut_manager.lut.nan_color = 0, 0, 0, 0
否则,使用 scalar=z
并设置一个常量颜色查找表。您可以通过单击管道编辑器上的“颜色和图例”来创建自己的,然后单击“启动 lut 编辑器”。要使用此自定义颜色映射,请执行以下操作:
scalars = np.ones_like(x)
m = mlab.mesh(x, y, z, scalars=scalars, mask=mask)
m.module_manager.scalar_lut_manager.lut_mode = 'file'
m.module_manager.scalar_lut_manager.file_name = '/path/to/your.lut'
如果您不想弄乱 LUT 编辑器和所有这些麻烦事,这里有一个您可以直接从 Python 执行的纯 numpy 版本。
m = mlab.mesh(x, y, z, scalars=z, mask=mask)
# Lets make some colors:
# this is an array of (R, G, B, A) values (each in range 0-255), there should
# be at least 2 colors in the array.
colors = np.zeros((2, 4), dtype='uint8')
# Set the green value to constant.
colors[:,1] = 255
# the alpha value to fully opaque.
colors[:,3] = 255
# Now use this colormap.
m.module_manager.scalar_lut_manager.lut.table = colors
请注意,colors 数组至少应包含 2 种颜色,您可以根据需要添加任意多的颜色。对于恒定颜色 2 就足够了。
HTH.
关于python - 如何为 Mayavi 的网格图使用掩码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21175323/
我想在同一个图中绘制多个曲面,并使轴延伸到所有曲面上。 import numpy as np # Create data with x and y random in the [-2, 2] segm
在 Mayavi 中,我想在下图中看到轴的网格 # Source: >. import numpy as np from mayavi import mlab # Test data: Matlab
有没有办法自定义mayavi场景的默认工具栏?我想删除一些按钮,因为我不需要它们(例如保存按钮)。在这里您可以看到我正在谈论哪个工具栏: 该代码只是示例代码: import os os.environ
我一直在 python 3.5 和 Windows 10 计算机上使用 Mayavi。今天,我正在使用 mayavi 编写一些脚本,并且无缘无故(据我所知)mayavi 可视化窗口停止显示。事实上,任
MATLAB 有一个hold 函数(如果我没记错的话,已经有一段时间了)可以在同一个“图形”/窗口上绘制多个内容。反正有没有在 Mayavi 做这个?我想可视化计算的几个实现,并将它们全部放在同一个图
我想根据采用离散值的另一个值(ID)更改表面的颜色(因此我需要一个离散的颜色条)。在下面的简化示例中,我绘制了一个具有 3 个不同 ID 的球体: 0/左边红色 2/蓝色在中间 1/左边绿色 但是使用
我在 python 脚本中使用 Mayavi。一切正常,除了我无法更改颜色条的大小和位置。 我生成的颜色条是这样的: colorbar = mlab.colorbar(title='Frequ
假设我有一个像这样的 4d numpy 数组:my_array[x,y,z,t]。 有没有一种简单的方法可以将整个数组加载到 Mayavi 中,然后只需选择我要调查的 t? 我知道可以为数据设置动画,
我正在寻找一种方法来保持颜色条(和场景中的颜色)不变,而不管我显示的数据如何(例如,假设我想要颜色从 0 到 10,使用当前设置 mayavi 会根据数据调整颜色,所以第一个图将从 0 到 1,第二个
如何用 Mayavi 绘制隐式方程 F(x,y,z)=0?我试过 import scipy as np x, y, z = np.mgrid[-3:3:100j, -3:3:100j, -3:3:10
我刚刚在我的计算机上重新安装了 Fedora 28,并决定在 Python 3 中试用 Mayavi,它以前只能在 Python 2 中运行。我从 pip 安装了 Mayavi。与 pip3 inst
我正在使用 mayavi.mlab 生成网格图并希望背景不透明度为 0(或透明)。这可能吗? 最佳答案 如果您的目标是将 mayavi 图形集成到 matplotlib 图形中,这是可能的。您可以使用
我正在使用 mayavi 的 triangular_mesh 方法绘制 3D 网格。数据描述了 3D 空间中面朝下的人体轮廓(因此 cmap 可用于表示与相机的距离)。 这是用于生成绘图的代码(面和顶
我想渲染大约 500 张图像并将它们保存到不同的 png 文件中,因此我编写了一个包含我的数据集和渲染函数的小类 from mayavi import mlab mlab.options.offscr
我正在尝试使用 mayavi 脚本导出图像 from mayavi import mlab # data to be exported in image mlab.savefig('output.pn
据我所知 Mayavi 没有提供任何感知上统一的色彩图。我天真地试图通过它one of Matplotlib's colormaps但失败了: from mayavi import mlab impo
据我所知 Mayavi 没有提供任何感知上统一的色彩图。我天真地试图通过它one of Matplotlib's colormaps但失败了: from mayavi import mlab impo
我正在使用 mayavi 并使用 scalar 绘制我的三角形网格mlab.triangular_mesh 中的属性 model_plot = mlab.triangular_mesh(self.mo
我似乎无法让图例出现在 Mayavi 图中。我创建了一个简单的 3D 图,但我需要为该图提供图例。 Matplotlib 支持添加方式: import matplotlib.pyplot as plt
我一直在尝试运行以下Python代码(来自Enthought的网站)来测试Enthought的Mayavi模块的动画功能。 from mayavi import mlab import numpy n
我是一名优秀的程序员,十分优秀!