秉着边学边写边折腾的原则,开始粗糙的工作。真正掌握还是得讲解给别人听。 先给出网课
https://www.icourse163.org/course/BIT-1001871001
Mayavi官方
http://docs.enthought.com/mayavi/mayavi/genindex.html
(有时候这网站会装死,一般过几个小时就会活过来)
我发现了,光是三流操作还不够,还得加上四流翻译。

上一章是图像控制函数-Figure handling functions,主要是涉及,画图前后的一些工作,比如是否可视化,可视化的窗口大小,自动保存等。
相对上一章而言,这章的处理是图像的内容方面。
添加一些数据栏,坐标轴之类,这章的内容很实用,也很简短,关键是也很简单。
惯例,三节,0.老代码。1.各项参数,2.补充。(原始排版风格)
http://docs.enthought.com/mayavi/mayavi/auto/mlab_decorations.html

0.用于调试的代码

import numpy as np
from mayavi import mlab
x,y,z = np.mgrid[-5:5:24j,-5:5:24j,-5:5:24j]
u,v,w = x,x*y,z-1
mlab.figure(size=(500,540))
SimpleHandle = mlab.quiver3d(x,y,z,u,v,w)
mlab.show()


.
.

1.Figure decoration functions

colorbar,scalarbar,vectorbar

mayavi.mlab.colorbar(object=None, title=None, orientation=None, nb_labels=None, nb_colors=None, label_fmt=None)
Adds a colorbar for the color mapping of the given object.
If the object has scalar data, the scalar color mapping is represented. Elsewhere the vector color mapping is represented, if available. If no object is specified, the first object with a color map in the scene is used.
为映射的图像对象添加颜色条,如果对象存在标量数据,将绘制标量,如果存在矢量数据,同理。如果不指定object对象,则将默认绘制scene的第一个对象。

mlab.colorbar()一下之后,因为上面那个图是矢量数据,它就绘制了一个矢量bar
这个colorbar不是很建议采用,自动有一定好处,但是自动就容易出错。
scalarbar,vectorbarcolorbar用法是一毛一样的,讲一个好了。

参数:

object:

Optional object to get the color map from

上面的那个老代码里面的SimpleHandle接受了操作对象的,注意SimpleHandle的类型,是个<mayavi.modules.vectors.Vectors>对象
所以可以指定object给它,比如:
mlab.colorbar(object=SimpleHandle)
你如果不注明,它也不会给你添加的。如果没有标量,写了scalarbar()它也不会给你加的,倒是GUI可以给你乱入一个。
最多print一个This object has no scalar data.

title:

The title string
colorbar的名称。

添加一个’Simple’
show()前面追加一行代码:
mlab.colorbar(title='Simple')

多了一行’Simple’

orientation:

Can be 'horizontal' or 'vertical'
添加的颜色条的方向,只接受'horizontal''vertical'(水平或者垂直,默认是水平horizontal
上面那个就是orientation默认效果,水平。似乎是无效的,多半是个Bug。没关系,还有其他两个方法:GUI来调整。
GUI方法:

如果怕出错,就不从代码设置colorbar()直接在GUI里面添加,他会默认放置成纵向的:

得到效果:

nb_labels:

The number of labels to display on the colorbar.
colorbarlabels刻度数目。

mlab.colorbar(nb_labels=5)
这个有默认值8,默认标注8个刻度。可以自己赋值。它的大小会自动调整,不要赋得太大,不然会小得看不清,你就得全屏。总之不建议,默认值是比较合理的。

label_fmt:

The string formater for the labels. This needs to be a formater for float number, eg '%.1f'.
labels的字符串格式。需要为浮点数设置一个格式,比如'%.1f',意为保留一位小数。

默认值是保留2位,不是1位。保留的是有效位数,用科学计数法,不是单纯的浮点。下面举例说明。
mlab.colorbar(label_fmt='%.1f')
左边是默认的,右边是个老年人看的图。

如果数据很大,图像里面的label采用的是科学计数法,所谓的'%.2f'是用的
比如开始的离散x,y,z = np.mgrid[-500:500:24j,-500:500:24j,-500:500:24j]

nb_colors:

The maximum number of colors displayed on the colorbar.
colorbar显示的颜色的最大值。
这个就是colorbar的色阶分辨率,像上面的colorbar看起来都好像是连续变化的,其实不然,只要这个数目给得小一点,就能明显看得出它是不连续的色阶。
这个只接受整型,不然就要得到以下报错:
traits.trait_errors.TraitError
The 'maximum_number_of_colors' trait of a ScalarBarActor instance must be 2 <= >>>>a long integer <= 2147483647, but a value of 20.0 <class 'float'> was specified.

把这个值放得小一点的效果:
mlab.colorbar(nb_colors=8)

.
.

xlabel,ylabel,zlabel:

mayavi.mlab.xlabel(text, object=None)
mayavi.mlab.ylabel(text, object=None)
mayavi.mlab.zlabel(text, object=None)
Creates a set of axes if there isn’t already one, and sets the x(y,z) label.
如果没有设置的话,创建一组坐标轴,以及设置轴标签。

参数:

object:

The object to apply the module to, if not the whole scene is searched for a suitable object.

这个是个很实用的东西,经常和outline()一起配合使用
text设置是无效的。

.
.
*一些补充
1.需要注意一下,虽然都是图像修饰函数,但是他们完全不属于一个层级
colorbar,scalarbar,vectorbar主要是LUT里面的设置,colorbar的出现不会带来一个层级。
xlabel,ylabel,zlabel则不同,它会创建一个AxesModule层级
如果就层级来说的话,colorbar所在的层级是xlabel的父级,我不认为管线配置里面的子级父级是包含关系,而是认为是流程关系,绘制顺序的关系,而同级的顺序直接可以交换。

2.两类图形修饰函数,都有Bug,前者是scalarbar的方向,解决方式是GUI,后者是text设置,就目前提过的内容来说,还没有可行的方法来改变。如果有人知道,请告诉我~

3.绘图的时候往往会这样补充:
xlabel()
outline()
在最后的show之前增设外轮廓和坐标轴。

填坑区:
1.colorbar的Bug
2. xlabel的text Bug

更新(18.12.13已更完)
2018.12.13.——一次更完。

三流Mayavi操作-Mayav-2.1.2-图形修饰函数 Figure decoration functions相关推荐

  1. 三流Mayavi操作-Mayav-2.1.1-图形控制函数 Figure handling functions

    秉着边学边写边折腾的原则,开始粗糙的工作.真正掌握还是得讲解给别人听. 先给出网课 https://www.icourse163.org/course/BIT-1001871001 Mayavi官方 ...

  2. 三流Mayavi操作-Mayav-2.1.0 绘制函数,通用参数、目录。

    秉着边学边写边折腾的原则,开始粗糙的工作.真正掌握还是得讲解给别人听. 先给出网课 https://www.icourse163.org/course/BIT-1001871001 Mayavi官方 ...

  3. 三流Mayavi操作-Mayav-2.1.2-mesh、triangular_mesh绘制

    秉着边学边写边折腾的原则,开始粗糙的工作.真正掌握还是得讲解给别人听. 先给出网课 https://www.icourse163.org/course/BIT-1001871001 Mayavi官方 ...

  4. 三流Mayavi操作-Mayav-应用举例

    秉着边学边写边折腾的原则,开始粗糙的工作.真正掌握还是得讲解给别人听. 先给出网课 https://www.icourse163.org/course/BIT-1001871001 Mayavi官方 ...

  5. 一步步编写操作系统 71 直接操作显卡,编写自己的打印函数71-74

    一直以来,我们在往屏幕上输出文本时,要么利用bios中断,要么利用系统调用,这些都是依赖别人的方法.咱们还用过一个稍微有点独立的方法,就是直接写显存,但这貌似又没什么含量.如今我们要写一个打印函数了, ...

  6. matlab图形标注与修饰函数title、xlabel、ylabel 【matlab图行绘制二】

    MATLAB 图形标注与修饰函数 在 MATLAB中,可利用 Figure窗口的菜单和工具栏对图形进行标注.修饰等,操作简单,此外,还可以利用 MATLAB中自带的函数来进行图形的修饰.下面将对其进行 ...

  7. R中设置图形参数--函数par()…

    原文地址:R中设置图形参数--函数par()详解作者:菜鸟的成长 R有着非常强大的绘图功能,我们可以利用简单的几行代码绘制出各种图形来,但是有时候默认的图形设置没法满足我们的需要,甚至会碰到各种各样的 ...

  8. 【ZZULIOJ】1108: 打印数字图形(函数专题)

    ZZULIOJ题解 1108: 打印数字图形(函数专题) 题目描述 从键盘输入一个整数n(1≤n≤9),打印出指定的数字图形.要求在程序中定义并调用如下函数:PrintSpace(m)用来输出m个空格 ...

  9. boost::python模块包装几个 C++ 函数 将二维数组操作为采用 NumPy 数组的 Python 函数作为参数

    boost::python模块包装几个 C++ 函数 将二维数组操作为采用 NumPy 数组的 Python 函数作为参数 实现功能 C++实现代码 实现功能 boost::python模块包装几个 ...

最新文章

  1. Ubuntu 修改本地磁盘名称
  2. 四丶KingFeng搭建+青龙对接kingfeng
  3. D - Delete Prime Gym - 102875D
  4. USACO2.4のP1522-牛的旅行(Cow Tours)【最短路Flody】
  5. zabbix服务器与客户端(Linux+Windows)的搭建
  6. NOIP2016D2T2 蚯蚓
  7. ELK logstash gork匹配在线测试
  8. 【MFC开发(6)】复选框按钮控件Check Box
  9. C语言十进制转换二进制
  10. 关于body.clientHeight,body.clientWidht获取的不是可视高度的问题
  11. osm地图数据 mysql_一种OSM地图数据中路网交叉口节点自动合并方法与流程
  12. 在图3-30 中,某学院的以太网交换机有三个接口分别和学院三个系的以太网相连,另外三个接口分别和电子邮件服务器、万维网服务器以及一个连接互联网的路由器相连。图中的A,B和C都是100Mbit/s以太网
  13. 山东2016年高考高校理工科录取人数统计
  14. SAP WRITE设置列表颜色 页眉页尾输出控制
  15. 卡巴斯基和Endtab.org开设新课程教授用户如何防范人肉搜索
  16. 红米K30S至尊纪念版和小米10至尊纪念版的区别
  17. Error occured processing XML 'Cannot find class [springmvc.extention.BeanArgumentResolver]
  18. 生存模型的C-index(C指数)
  19. Flatten()详解
  20. JS中的各种遍历方法

热门文章

  1. 基于springboot的手办定制销售系统 毕业设计-附源码031800
  2. 2022最新隧道人员精确定位系统方案介绍
  3. 软件需求规格说明模板
  4. 显示器显示“输入信号超出范围”怎么调整
  5. 飞桨AI4S污染物扩散快速预测模型,亮相全国数据驱动计算力学研讨会
  6. 解决php网页运行超时问题:Maximum execution time of 30 seconds exceeded
  7. 世卫:乳腺癌已成全球最常见癌症
  8. 不知道更新什么,推荐几首歌
  9. 李阳疯狂英语突破对话(10)-美国人长得都一个样
  10. 微信小程序上拉加载流程