Mayavi 2 脚本编写:基本模块¶
日期 | 2007-08-12(最后修改),2007-08-10(创建) |
---|
module.actor.property.color = fg_color
其中 fg_color 是一个“元组”,例如 (0, 0, 0) 表示黑色。
注意:您可以为每个模块/过滤器设置颜色(当然,在可用时),如上所示。但您也可以为所有 !MayaVi2 会话设置背景/前景颜色。请参见 [:Cookbook/MayaVi/Tips: Cookbook/MayaVi/Tips]。因此,您的背景和前景颜色可能(实际上必须)与此处显示的图片中的颜色不同。
轮廓模块¶
这个非常简单的模块没有什么特别之处。
开始导入轮廓模块
from enthought.mayavi.modules.outline import Outline
然后
fg_color = (0, 0, 0) # black foreground color
o = Outline()
script.add_module(o)
o.actor.property.color = fg_color
![](files/../_static/items/attachments/MayaVi_ScriptingMayavi2_BasicModules/basic_outline.png
轴模块¶
对于轴,您可以设置多个参数
* color for axes;
\ * color for labels;
\ * labels name;
\ * and label format.
您可以键入以下内容
from enthought.mayavi.modules.axes import Axes
然后
a = Axes()
script.add_module(a)
a.axes.property.color = fg_color # color for axes
a.axes.axis_title_text_property.color = fg_color # color for axes title
a.axes.x_label = "Lx" # label for Ox axis
a.axes.y_label = "Ly" # label for Oy axis
a.axes.z_label = "Lz" # label for Oz axis
a.axes.label_format = "" # no dimensions displayed
a.axes.axis_label_text_property.color = fg_color # in case we want to display them
标签格式是沿 Ox、Oy 和 Oz 轴的尺寸格式。默认情况下,它设置为 %6.3g。
![](files/../_static/items/attachments/MayaVi_ScriptingMayavi2_BasicModules/basic_axes.png)
方向轴模块¶
!方向轴模块将在渲染窗口的角落显示一个小三面体,显示三个轴 Ox、Oy、Oz 的方向。
注意:为了使用此模块,必须安装 VTK > 5.0。
这里没有什么特别之处,就像轮廓模块一样,您可以设置标签颜色
from enthought.mayavi.modules.orientation_axes import OrientationAxes
和
oa = OrientationAxes()
script.add_module(oa)
oa.text_property.color = fg_color
![](files/../_static/items/attachments/MayaVi_ScriptingMayavi2_BasicModules/basic_orientationaxes.png)
文本模块¶
您可以使用此模块为渲染窗口显示标题。
您需要一个文本(一个字符串),并且必须使用 x_position 和 y_position 参数在窗口中设置其位置(坐标在 x 和 y 中从 0 到 1)。
然后您可以设置文本的高度和宽度
from enthought.mayavi.modules.text import Text
和
# I like my title centered and at top of the window
t = Text()
t.text = "My Title Centered at the Top"
script.add_module(t)
t.actor.scaled_text = False
t.actor.text_property.font_size = 34
t.actor.text_property.color = fg_color
# have to find out text width to center it. Tricky, but works fine. Thanks to Prabhu.
t.width = 1.0*t.actor.mapper.get_width(t.scene.renderer)/t.scene.renderer.size[0]
height = 1.0*t.actor.mapper.get_height(t.scene.renderer)/t.scene.renderer.size[1]
t.x_position = 0.5-t.width/2
t.y_position = 1-height
![](files/../_static/items/attachments/MayaVi_ScriptingMayavi2_BasicModules/basic_title.png)
现在,我们将介绍如何设置颜色条,称为“标量”或“矢量”颜色条。它取决于您在文件中拥有的数据。
设置颜色条¶
严格来说,颜色条不是一个模块,也就是说,您不需要使用 add_module() 命令添加它:您必须将“module_manager”对象与之前加载的模块关联,例如 Text 模块。
然后,您可以按如下方式配置颜色条(关键字不言自明)
mmsclut = t.module_manager.scalar_lut_manager
mmsclut.show_scalar_bar = True
mmsclutsc = mmsclut.scalar_bar
mmsclutsc.orientation = "vertical" # or "horizontal"
mmsclutsc.width = 0.1
mmsclutsc.height = 0.8
mmsclutsc.position = (0.01, 0.15) # color bar located to the left of the rendering window
mmsclutsc.label_text_property.color = fg_color
mmsclutsc.title_text_property.color = fg_color
mmsclut.number_of_labels = 10
mmsclut.number_of_colors = 64
mmsclut.data_name = "My Label"
![](files/../_static/items/attachments/MayaVi_ScriptingMayavi2_BasicModules/basic_colorbar.png)
注意:要为矢量而不是标量配置颜色条,请将上面的“scalar_lut_manager”替换为“vector_lut_manager”。
最后,为了结束“基本”模块部分,让我们看看如何设置场景。
设置场景¶
通过“设置场景”,您需要阅读“场景将如何被看到”:例如,设置背景颜色和场景的视角。
像往常一样,使用 python & TVTK 设置这些参数非常容易。
如果您想更改背景颜色,您可能还需要更改所有模块的前景色。我们在这里提醒一下。
#! /usr/bin/env python
from enthought.mayavi.modules.outline import Outline
from enthought.mayavi.modules.axes import Axes
from enthought.mayavi.modules.orientation_axes import OrientationAxes
from enthought.mayavi.modules.text import Text
# we want a dark foreground color on a bright background
fg_color = (0.06666, 0.06666, 0.1804) # dark blue
bg_color = (1, 1, 0.94118) # ivory
# setting foreground color for Outline module
o = Outline()
script.add_module(o)
o.actor.property.color = fg_color
# setting foreground color for Axes module
a = Axes()
script.add_module(a)
a.axes.property.color = fg_color # color for axes
a.axes.axis_title_text_property.color = fg_color # color for axes label
a.axes.x_label = "Lx" # label for Ox axis
a.axes.y_label = "Ly" # label for Oy axis
a.axes.z_label = "Lz" # label for Oz axis
a.axes.label_format = "" # no dimensions displayed
# setting foreground color for OrientationAxes module
oa = OrientationAxes()
script.add_module(oa)
oa.text_property.color = fg_color
# setting foreground color for Text module
t = Text()
t.text = "My Title Centered at the Top"
script.add_module(t)
t.actor.scaled_text = False
t.actor.text_property.font_size = 34
t.actor.text_property.color = fg_color
t.width = 1.0*t.actor.mapper.get_width(t.scene.renderer)/t.scene.renderer.size[0]
height = 1.0*t.actor.mapper.get_height(t.scene.renderer)/t.scene.renderer.size[1]
t.x_position = 0.5-t.width/2
t.y_position = 1-height
# setting foreground color for labels and title color bar.
mmsclut = t.module_manager.scalar_lut_manager
mmsclut.show_scalar_bar = True
mmsclutsc = mmsclut.scalar_bar
mmsclutsc.orientation = "vertical"
mmsclutsc.width = 0.1
mmsclutsc.height = 0.8
mmsclutsc.position = (0.01, 0.15)
mmsclutsc.label_text_property.color = fg_color
mmsclutsc.title_text_property.color = fg_color
mmsclut.number_of_labels = 10
mmsclut.number_of_colors = 64
mmsclut.data_name = "My Label"
# setting background color for the scene.
t.scene.background = bg_color
一些视角也在 !MayaVi2 中预定义。
如果您想
* Ox 轴 垂直于 场景:使用 x_plus_view() (朝向) 或 x_minus_view() (向后) 方法;
* Oy 轴 垂直于 场景:使用 y_plus_view() (朝向) 或 y_minus_view() (向后) 方法;
* Oz 轴 垂直于 场景:使用 z_plus_view() (朝向) 或 z_minus_view() (向后) 方法;
* 等轴测视图 (坐标法线为 (1, 1, 1)),使用 isometric_view 方法。
您也可以
* 设置您的需求的仰角和方位角(以度为单位);
* 设置场景的缩放比例。
与
t.scene.x_plus_view()
t.scene.camera.azimuth(62)
t.scene.camera.elevation(19.5)
t.scene.camera.zoom(1.5)
最后,您可以选择是否要为您的场景使用透视视图或平行投影
t.scene.camera.parallel_projection = True
![](files/../_static/items/attachments/MayaVi_ScriptingMayavi2_BasicModules/basic_scene_parall.png
用于平行投影,或
t.scene.camera.parallel_projection = False
用于透视视图。
这里,“t”代表之前加载的 Text 模块。
注意:您可以为场景设置许多其他参数。请参阅 [:Cookbook/MayaVi/Tips: Cookbook/MayaVi/Tips] 以了解有关设置参数模块的更多信息。
现在,是时候阅读最有趣的部分了:配置和使用与您的数据交互的模块和过滤器。
章节作者:FredericPetit
附件