标签: mayavi

如何在matplotlib中隐藏表面图后面的一条线?

我想通过球体表面上的色彩映射使用Matplotlib绘制数据.另外,我想添加一个3D线图.我到目前为止的代码是这样的:

import matplotlib
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np


NPoints_Phi         = 30
NPoints_Theta       = 30

radius              = 1
pi                  = np.pi
cos                 = np.cos
sin                 = np.sin

phi_array           = ((np.linspace(0, 1, NPoints_Phi))**1) * 2*pi
theta_array         = (np.linspace(0, 1, NPoints_Theta) **1) * pi


phi, theta          = np.meshgrid(phi_array, theta_array) 


x_coord             = radius*sin(theta)*cos(phi)
y_coord             = radius*sin(theta)*sin(phi)
z_coord             = radius*cos(theta)


#Make colormap the fourth dimension
color_dimension     = x_coord 
minn, maxx          = color_dimension.min(), color_dimension.max()
norm                = matplotlib.colors.Normalize(minn, maxx)
m …
Run Code Online (Sandbox Code Playgroud)

python plot matplotlib mayavi

11
推荐指数
1
解决办法
1839
查看次数

在MayaVi中保存多个图像

我想渲染大约500个图像并将它们保存到不同的png文件中,因此我写了一个包含我的数据集和渲染函数的小类

from mayavi import mlab
mlab.options.offscreen=True

class Dataset(object):
    def __init__(self):
        some init stuff etc

                 .
                 .
                 .
                 .

    def save_current_frame_to_png(self, filename):
        mlab.contour3d(self.frame_data, contours =30, opacity=0.2) 
        mlab.savefig(filename)
        mlab.clf()
        mlab.close()
        gc.collect()

    def create_movie_files(self):
        folder_name = "animation"
        try:
            os.makedirs(folder_name)
        except OSError:
            raise OSError("Directory already exists.")

        self.__go_to_first_frame()

        for i in range(self.frames):
            filename = "".join([folder_name, "/%.5i" % i, ".png"])
            print filename
            self.save_current_frame_to_png(filename)
            self.read_single_frame()

        self.__go_to_first_frame()
Run Code Online (Sandbox Code Playgroud)

所以一切似乎都运行良好,但我看看内存使用情况,直到系统崩溃.所以我试图使用mlab.clf()gc.collect()保持我的记忆低,这是行不通的.我发现一个解决方案mlab.close()似乎适用于内存使用,但这带来了一个新问题.每次渲染新图像时,mayavi都会创建一个新窗口,因此在大约200个窗口之后程序崩溃.也许是否有可能完全禁用Windows?在我看来,mlab.options.offscreen=True只禁用当前窗口内的绘图.

编辑: self.frame_data是一个numpy形状的数组(100,100,100),self.read_single_frame()只是从文本文件中读取下一帧并存储它self.frame_data.这个函数不会增加内存,如果我关闭渲染内存使用率保持在1.2%.

python mayavi

10
推荐指数
1
解决办法
955
查看次数

如何在MayaVi中绘制正确的3D轴,就像在Matplotlib中找到的那样

我想知道如何在MayaVi中的3D曲面图上使用正确的轴.我能创造的最佳轴看起来像这样 ......

在此输入图像描述

但是,如果我要做一个演示或把它们放在海报上,这些看起来不太专业.

我希望轴看起来像这样 ......

在此输入图像描述

与默认的MayaVi轴相比,这些轴看起来更专业,更易于阅读.

任何帮助将不胜感激.

谢谢!

python 3d plot matplotlib mayavi

10
推荐指数
1
解决办法
2854
查看次数

用于闪亮的Python 3D表面图的Phong着色

我正在尝试使用镜面着色在Python中创建美学上令人愉悦的3D绘图,并且迄今为止尝试使用Matplotlib与3D轴和Mayavi的表面绘图,例如,来自Mayavi冲浪示例网页:

在此输入图像描述

结果看起来很好,在Mayavi中似乎有合理的照明控制,虽然我似乎无法实现"闪亮"的外观.

在Matlab中,这可以通过使用'Phong'照明来实现:

在此输入图像描述

请参阅http://www.mathworks.com/matlabcentral/fileexchange/35240-matlab-plot-gallery-change-lighting-to-phong/content/html/Lighting_Phong.html

因此,我的问题是:如何在基于Python的3D绘图中实现这种Phong风格的闪亮阴影?

python matlab matplotlib mayavi phong

10
推荐指数
2
解决办法
4725
查看次数

在Python 3中绘制3D图形

我想做一些3D绘图来可视化一些数据.我正在使用matplotlib但是matplotlib的3D功能没有2D绘图那么强大.我发现Mayavi非常强大.甚至matplotlib也在http://matplotlib.org/mpl_toolkits/mplot3d/faq.html中推荐它

但是,我之前的大多数工作都是在Python 3中完成的,但MayaVi还不支持Python 3.

我怎么能在Python 3中绘制3D图形?

python matplotlib python-3.x mayavi

10
推荐指数
1
解决办法
3587
查看次数

Mayavi:围绕y轴旋转

我正在使用mayavi的triangular_mesh方法绘制3D网格.该数据描述了在3D空间中面朝下放置的人体轮廓(因此cmap可以用来表示与相机的距离).

这是用于生成绘图的代码(面和顶点来自外部对象,这里有太多不能显示):

from mayavi import mlab

import math
import numpy as np
import sys
import os


fig = mlab.figure(fgcolor=(0, 0, 0), bgcolor=(1, 1, 1), size=(1920, 980))

a = np.array(this_mesh.vertices - refC.conj().transpose())  # this_mesh is an object created from external data files 

this_mesh.faces = this_mesh.faces.astype(int) -1  # mesh data is generated by matlab, which is 1-indexed

m = mlab.triangular_mesh(x, y, z, this_mesh.faces, opacity=0.75)

mlab.axes(extent=[-1100, 1100, -1100, 1100, -1100, 1100])
Run Code Online (Sandbox Code Playgroud)

在不移动相机的情况下,轮廓面朝下.为了正面观看模型,我正在改变相机的方位角和高度,以便从上到下查看图形.这显示了预期的轮廓.

mlab.view(azimuth=0, elevation=180)
mlab.show()
Run Code Online (Sandbox Code Playgroud)

我的下一个任务是创建一系列图像,其中摄像机围绕绘图平移,从面向右侧的轮廓开始,并朝向左侧完成.

复杂的是,为了获得深度信息的色彩图,我已经移动了视图的方位角和高度(如上面的代码所示).Mayavi有更多选择移动相机而不是matplotlib,但它似乎没有办法围绕Y轴旋转,所以我猜我需要对方位角和高程执行一些复杂的计算来实现同样的结果 - 但我不知道从哪里开始(我刚开始在3D空间工作,而我的脑子还没想到那样). …

python 3d mayavi

10
推荐指数
1
解决办法
1771
查看次数

使用Mayavi/Python从3D数据绘制轮廓图

我想使用Mayavi以与本页第三个图形完全相同的方式绘制三维等高线图(氢电子云模型):

http://www.sethanil.com/python-for-reseach/5

我有一组数据点,我使用自己的模型创建,我想使用它.数据点存储在一个多维的numpy数组中,如下所示:

XYZV = [[1, 2, 3, 4],
        [6, 7, 8, 9],
        ...
        [4, 5, 6, 7]]
Run Code Online (Sandbox Code Playgroud)

数据点不是在XYZ空间中均匀分布,也不是以任何特定顺序存储.我认为这个例子使用了一个meshgrid来生成数据点 - 我已经看了这个但完全不理解它.任何帮助将非常感激?

H http://www.sethanil.com/_/rsrc/1267943775903/python-for-reseach/5/Article5-fig3.png

python plot numpy contour mayavi

9
推荐指数
2
解决办法
1万
查看次数

Mayavi没有从Spyder中运行:抱怨"ValueError:API'QString'......"

我无法在Spyder IDE中运行/使用Mayavi库.我已经描述了下面的问题.任何帮助都将非常有用.(非常感谢你提前.)

重现问题的步骤:

  1. 只需在脚本中导入Mayavi库(例如使用"import mayavi.mlab as mlab")并执行脚本将重现此问题.
  2. 我在这里包含一个测试代码(请注意,此代码是来自Mayavi网站的示例代码),以重现问题:

from numpy import sin, cos, mgrid
import mayavi.mlab as mmlab

def f(x,y):
  return sin(x + y) + sin(2*x - y) + cos(3*x + 4*y)

x,y = mgrid[-7.:7.05:0.01, -5.:5.05:0.05]
z = f(x,y)
s = mmlab.contour_surf(x,y,z)
mmlab.show()
Run Code Online (Sandbox Code Playgroud)

预期输出和错误:

预期输出:带有数字的Mayavi数字窗口.我所看到的是:在控制台窗口中出现以下值错误(我包括完整的消息序列以便显式):

--------------------------错误信息的开头------------------

Traceback (most recent call last):
  File "C:\PROGRAMSANDEXPERIMENTS\PYTHON\MayaviScripts\Learning\testMayavi.py", line 2, in <module>
    import mayavi.mlab as mmlab
  File "C:\Python27\lib\site-packages\mayavi\mlab.py", line 27, in <module>
    from mayavi.tools.camera import view, roll, yaw, pitch, move
  File "C:\Python27\lib\site-packages\mayavi\tools\camera.py", line 25, …
Run Code Online (Sandbox Code Playgroud)

python spyder mayavi

9
推荐指数
1
解决办法
7482
查看次数

使用Mayavi制作3D图形,使用Matplotlib样式的轴

我一直在使用Mayavi进行3D绘图,我可以绘制我想要的散点图,但似乎无法让Axes看起来合适.我发现以下的问题开始得到我所追求的内容,但没有详细说明.我想要一个像#1这样的3D散点图,但是看起来很漂亮的轴像#2(我已经嵌入了,但我没有足够的声誉).常规的Mayavi Axes不会削减它.获得Matplotlib有飞机的任何提示?

python matplotlib mayavi

9
推荐指数
1
解决办法
1436
查看次数

如何安装Mayavi Trait后端?

操作系统: Linux Kubuntu 14.4.5

Python: Python 3.5.2 :: Continuum Analytics,Inc.


我试图将Mayavi安装到我的anaconda环境中:

conda install -c menpo mayavi=4.5.0
conda install -c anaconda wxpython=3.0.0.0
conda install pyqt
conda install qt
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试从http://docs.enthought.com/mayavi/mayavi/auto/example_surface_from_irregular_data.html运行示例时,我收到错误消息

ImportError: Could not import backend for traits
Run Code Online (Sandbox Code Playgroud)

与解释:

确保安装了TraitsBackendWx或TraitsBackendQt项目.如果您使用easy_install安装了Mayavi,请尝试easy_install.easy_install Mayavi [app]也可以使用.

如果您执行了源检出,请确保在Traits,TraitsGUI和您选择的Traits后端运行'python setup.py install'.

还要确保安装了wxPython或PyQT.wxPython:http: //www.wxpython.org/ PyQT:http: //www.riverbankcomputing.co.uk/software/pyqt/intro

我在网上搜索并试图找到任何设置,但找不到任何东西.

http://docs.enthought.com/mayavi/mayavi/installation.html?highlight=installation我得到了我可以通过pip安装它pip install mayavi,但这只导致"要求已经满足"的消息,其中包括

要求已经满足:/anaconda2/envs/myenv/lib/python3.5/site-packages(来自mayavi)的特征

该怎么办?

python mayavi anaconda conda

9
推荐指数
1
解决办法
4440
查看次数

标签 统计

mayavi ×10

python ×10

matplotlib ×5

plot ×3

3d ×2

anaconda ×1

conda ×1

contour ×1

matlab ×1

numpy ×1

phong ×1

python-3.x ×1

spyder ×1