标签: mayavi

使用pip安装Mayavi - 没有名为vtk的模块

我想用Mayavi.

情况

  • 我使用MacBook Air,OSX 10.7.3.
  • 我使用Python 2.7.2
  • virtualenv安装了.但我没有用它来安装.

我手动安装了它的所有依赖项,包括VTK.

因为VTK,我按照其安装指南并安装了python包装器.

现在,如果我打开一个新的终端窗口并打开python,我可以导入vtk而不会出现任何错误.

问题

我尝试使用以下命令安装Mayavi:

pip install mayavi
Run Code Online (Sandbox Code Playgroud)

但是发生以下错误:

Downloading/unpacking mayavi
  Running setup.py egg_info for package mayavi
    build_src
    building extension "tvtk.array_ext" sources
    building data_files sources
    build_src: building npy-pkg config files

    no previously-included directories found matching 'artwork'
    no previously-included directories found matching 'docs/pdf'
Requirement already satisfied (use --upgrade to upgrade): apptools in /Library/Python/2.7/site-packages (from mayavi)
Requirement already satisfied (use --upgrade to upgrade): traits in /Library/Python/2.7/site-packages …
Run Code Online (Sandbox Code Playgroud)

python installation pip vtk mayavi

32
推荐指数
3
解决办法
4万
查看次数

如何使用matplotlib在python中绘制3D密度图

我有一个大的(x,y,z)蛋白质位置数据​​集,并希望绘制高占有率的区域作为热图.理想情况下,输出应该类似于下面的体积可视化,但我不确定如何使用matplotlib实现这一点.

http://i.stack.imgur.com/nsNEL.jpg

我最初的想法是将我的位置显示为3D散点图,并通过KDE为其密度着色.我用测试数据将其编码如下:

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

mu, sigma = 0, 0.1 
x = np.random.normal(mu, sigma, 1000)
y = np.random.normal(mu, sigma, 1000)
z = np.random.normal(mu, sigma, 1000)

xyz = np.vstack([x,y,z])
density = stats.gaussian_kde(xyz)(xyz) 

idx = density.argsort()
x, y, z, density = x[idx], y[idx], z[idx], density[idx]

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(x, y, z, c=density)
plt.show()
Run Code Online (Sandbox Code Playgroud)

这很好用!但是,我的真实数据包含数千个数据点,并且计算kde和散点图变得非常慢.

我的真实数据的一小部分:

http://i.stack.imgur.com/BFT5V.png

我的研究表明,更好的选择是评估网格上的高斯kde.我只是不确定如何在3D中:

import numpy as np
from scipy import stats
import …
Run Code Online (Sandbox Code Playgroud)

python matplotlib scipy kernel-density mayavi

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

如何在python中渲染3D直方图?

我想从Hacker's Delight那里制作这样的情节:

在此输入图像描述

有什么方法可以在Python中实现这一目标?一种易于交互式调整图形(改变当前观察到的X/Y切片)的解决方案将是理想的.

matplotlib和mplot3d模块都没有这个功能AFAICT.我发现mayavi2但是它非常笨重(我甚至找不到调整大小的选项)并且从ipython运行时似乎只能正常工作.

或者gnuplot可以工作,但我不想为此学习另一种语言语法.

python plot data-visualization matplotlib mayavi

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

Mayavi指向不同大小和颜色的3D

mayavi是否可以单独指定每个点的大小和颜色?

那个API对我来说很麻烦.

points3d(x, y, z...)
points3d(x, y, z, s, ...)
points3d(x, y, z, f, ...)

x, y and z are numpy arrays, or lists, all of the same shape, giving the positions of the points.
If only 3 arrays x, y, z are given, all the points are drawn with the same size and color.
In addition, you can pass a fourth array s of the same shape as x, y, and z giving an associated scalar value for each …
Run Code Online (Sandbox Code Playgroud)

python data-visualization vtk mayavi

13
推荐指数
3
解决办法
5888
查看次数

TraitsUI中的Mayavi colorbar创建空白窗口

我正在尝试在TraitsUI中创建一个包含两个Mayavi数字的GUI.我根据Mayavi文档中的多个引擎示例实现了这些数字.

但是,当我向其中一个图形添加颜色条并运行GUI脚本时,除了所需的TraitsUI窗口外,它有时会打开一个空白的Mayavi场景编辑器窗口.这个空白窗口并不总是出现,从不在重新启动python内核后的第一次运行,有时只是在连续几次运行脚本并关闭每次出现的窗口之后.

运行下面大大减少的代码会产生相同的行为,删除该mlab.colorbar(s)行可以解决问题.如何在不打开空白窗口的情况下获得彩条?对于表面图,似乎没有明显的方法将颜色条指定给特定的图形.我在Windows 7上运行Python 3.5(但在Ubuntu上遇到相同的问题).

from traits.api import HasTraits, Instance, on_trait_change
from traitsui.api import View, Item
import numpy as np

from mayavi.core.api import Engine
from mayavi.core.ui.api import SceneEditor, MlabSceneModel
from mayavi import mlab

#Generate a test surface to display
def test_surf():
    x, y = np.mgrid[-7.:7.05:0.1, -5.:5.05:0.05]
    z = np.sin(x + y) + np.sin(2 * x - y) + np.cos(3 * x + 4 * y)
    return x, y, z        

class MyApp(HasTraits):

    #Create a mayavi scene with …
Run Code Online (Sandbox Code Playgroud)

python python-3.x mayavi traitsui

13
推荐指数
1
解决办法
166
查看次数

动画mayavi points3d图

我正在尝试制作粒子轨迹的视频.但是,某种程度上我的场景永远不会更新 这是一个非常简单的例子:

from __future__ import absolute_import, division, print_function
from mayavi import mlab
import numpy as np
import math

alpha = np.linspace(0, 2*math.pi, 100)  

xs = np.cos(alpha)
ys = np.sin(alpha)
zs = np.zeros_like(xs)

mlab.points3d(0,0,0)
plt = mlab.points3d(xs[:1], ys[:1], zs[:1])

@mlab.animate(delay=100)
def anim():
    f = mlab.gcf()
    while True:
        for (x, y, z) in zip(xs, ys, zs):
            print('Updating scene...')
            plt.mlab_source.x[0] = x
            plt.mlab_source.y[0] = y
            plt.mlab_source.z[0] = z
            f.scene.render()
            yield


anim()
mlab.show()
Run Code Online (Sandbox Code Playgroud)

如果我运行此脚本,它会显示一个包含两个点和动画GUI的窗口.它还在终端上打印连续的"正在更新场景..."消息流.但是,场景根本不显示任何移动.

我究竟做错了什么?

Python 2.7,Mayavi 4.1,VTK 5.8

python animation vtk mayavi

12
推荐指数
1
解决办法
5826
查看次数

Mayavi中的TVTK错误(Python)

我正在运行Fedora 17(x64)机器,我尝试安装Mayavi for python via

yum install mayavi
Run Code Online (Sandbox Code Playgroud)

哪个工作正常,除了每次我写一个代码,我称之为mayavi模块(如mlab):

from enthought.mayavi import mlab
Run Code Online (Sandbox Code Playgroud)

它因错误而大叫

********************************************************************************
WARNING: Imported VTK version (5.8) does not match the one used
     to build the TVTK classes (5.6). This may cause problems.
     Please rebuild TVTK.
********************************************************************************
Run Code Online (Sandbox Code Playgroud)

我用谷歌搜索,但我不知道如何重建TVTK以匹配VTK的版本.我怀疑这是导致异常行为,但我不能确定.你如何重建TVTK?

python vtk mayavi

12
推荐指数
1
解决办法
4538
查看次数

是否可以直接将仿射变换矩阵应用于Mayavi ImageActor对象?

我正在使用Mayavi渲染一些由3D体积内的多个2D平面组成的成像数据,其位置,方向和比例由4x4刚体仿射变换矩阵定义.每架飞机包括:

  • 我使用的2D图像数据阵列 mayavi.mlab.imshow
  • 一组ROI的由线和点,我抽签使用的mayavi.mlab.points3dmayavi.mlab.plot3d分别.

我通过用我的仿射矩阵点击它们的坐标,将我的点和线顶点从2D参考平面转换为3D空间.基于我刚才的问题/答案在这里,我想通了,我可以设置的位置和方向ImageActor个别对象,使用:

obj = mlab.imshow(img)
obj.actor.orientation = [pitch, roll, yaw] # the required orientation (deg)
obj.actor.position = [dx, dy, dz] # the required position 
obj.actor.scale = [sx, sy, sz] # the required scale
Run Code Online (Sandbox Code Playgroud)

现在情节看起来像这样:

在此输入图像描述

所有东西都很好地排列,但是很难解释,因为这些平面的间距非常密集.我现在希望能够做的是通过一些比例因子"拉伸"z轴.在点和线的情况下,这很容易做到 - 我所做的就是将所有变换后的z坐标乘以比例因子.

但是,我无法弄清楚如何将相同的变换应用于图像.如果我只是缩放z位置,那么图像的旋转和缩放当然是错误的,并且我绘制的点/线将不再与图像位于同一平面上:

在此输入图像描述

我需要做的是应用一个非刚性仿射变换,它包含剪切以及旋转,平移和缩放到我的图像.

有没有什么方法可以手动应用剪切ImageActor,甚至更好的只是直接应用我预先计算的任意4x4仿射矩阵?

python transformation mayavi

12
推荐指数
1
解决办法
1757
查看次数

在MayaVi中指定3D点的绝对颜色

我正在使用MayaVi Python库来绘制3d点,使用points3d该类.文档指定通过第四个参数指定每个点的颜色s:

此外,您可以传递与x,y和z相同形状的第四个数组s,为每个点提供关联的标量值,或者返回标量值的函数f(x,y,z).此标量值可用于调整点的颜色和大小.

这指定了每个点的标量值,将点映射到颜色映射,例如copper,jethsv.例如,从他们的文件:

import numpy
from mayavi.mlab import *

def test_points3d():
    t = numpy.linspace(0, 4*numpy.pi, 20)
    cos = numpy.cos
    sin = numpy.sin

    x = sin(2*t)
    y = cos(t)
    z = cos(2*t)
    s = 2+sin(t)

    return points3d(x, y, z, s, colormap="copper", scale_factor=.25)
Run Code Online (Sandbox Code Playgroud)

得到:

在此输入图像描述

相反,我想将每个点的实际值指定为(r,g,b)元组.这可能在MayaVi中吗?我已经尝试用s一个元组数组替换,但是会抛出一个错误.

python color-mapping point-clouds mayavi

12
推荐指数
4
解决办法
4572
查看次数

让mayavi使用Python 3

我在python 3.3中运行mayavi时遇到了麻烦

当用python3(或python3.3)运行我的程序时,我得到了

from mayavi import mlab as ml
ImportError: No module named 'mayavi'
Run Code Online (Sandbox Code Playgroud)

要使numpy和matplotlib工作,我使用:

sudo apt-get install python3-"missing module"
Run Code Online (Sandbox Code Playgroud)

但是安装mayavi的常用方法就是

sudo apt-get install mayavi2
Run Code Online (Sandbox Code Playgroud)

并且python3找不到它....

有没有人知道如何让mayavi与Python3一起工作?它不受支持吗?

我试过了两个

import mayavi.mlab as ml
from mayavi import mlab as ml
Run Code Online (Sandbox Code Playgroud)

两者都给我同样的错误

任何澄清将不胜感激:)

python-3.x mayavi

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