python - Mayavi 如何显示轴网格
问题描述
在 Mayavi 中,我想在下面的图中看到轴的网格
# Source: <<https://scicomp.stackexchange.com/a/23148/10048>>.
import numpy as np
from mayavi import mlab
# Test data: Matlab `peaks()`
x, y = np.mgrid[-3:3:50j, -3:3:50j]
z = 3*(1 - x)**2 * np.exp(-x**2 - (y + 1)**2) \
- 10*(x/5 - x**3 - y**5)*np.exp(-x**2 - y**2) \
- 1./3*np.exp(-(x + 1)**2 - y**2)
mlab.figure(bgcolor=(1, 1, 1)) # Make background white.
surf = mlab.surf(x, y, z, colormap='RdYlBu', warp_scale=0.3, representation='wireframe', line_width=0.5)
mlab.outline(color=(0, 0, 0))
axes = mlab.axes(color=(0, 0, 0), nb_labels=5)
axes.title_text_property.color = (0.0, 0.0, 0.0)
axes.title_text_property.font_family = 'times'
axes.label_text_property.color = (0.0, 0.0, 0.0)
axes.label_text_property.font_family = 'times'
# mlab.savefig("vector_plot_in_3d.pdf")
mlab.gcf().scene.parallel_projection = True # Source: <<https://stackoverflow.com/a/32531283/2729627>>.
mlab.orientation_axes() # Source: <<https://stackoverflow.com/a/26036154/2729627>>.
mlab.show()
就像在 Matlab 中一样
我必须在 Mayavi 中使用哪个命令来实现这一点?
解决方案
我的建议是使用用户定义的过滤器,例如CubeAxesActor
from VTK
(这似乎比Axes
默认 Mayavi 中的过滤器更完整)。在 Mayavi 中会翻译成类似的东西
...
from mayavi import mlab
from tvtk.api import tvtk
...
# Load data
...
mlab.pipeline.user_defined(data, filter=tvtk.CubeAxesActor())
...
但似乎 Mayavi 不喜欢这个过滤器
traits.trait_errors.TraitError: Cannot set the undefined 'input_connection' attribute of a 'CubeAxesActor' object.
我不确定它是否与我的 VTK 版本有关,但您可以尝试
推荐阅读
- android - android studio 的 SHA1 密钥如何对多个用户相同?
- ruby-on-rails - Ruby 按特定要求对哈希数组进行排序
- postgresql - PostgreSQL 中的 pgadmin 有什么用途?
- postgresql-9.3 - to_number(text) 不退出你能帮忙吗?
- php - 如何在解码 JSON 后检查变量是否存在?
- django - Django查看html到pdf执行了两次
- angularjs - 如何在不使用 $timeout 的情况下知道 AngularJS 摘要周期何时结束?
- docker - 在命令服务更新下会发生什么?
- opencv - 使用英特尔实感和 openCV 在特定虚拟区域上的对象体积
- regex - 如何将 regex101 中的工作正则表达式转换为 Coldfusion