标签: mayavi

限制 Mayavi 鼠标拖动以绕其轴旋转地球

使用 iPython Notebook,我已经能够使用如下代码显示地球仪:

from mayavi import mlab
from mayavi.sources.builtin_surface import BuiltinSurface

ocean_blue = (0.4, 0.5, 1.0)
r = 6371 # km

sphere = mlab.points3d(0, 0, 0, name='Globe',
  scale_mode='none', scale_factor=r * 2.0,
  color=ocean_blue, resolution=50)

sphere.actor.property.specular = 0.20
sphere.actor.property.specular_power = 10

continents_src = BuiltinSurface(source='earth', name='Continents')
continents_src.data_source.on_ratio = 1  # detail level
continents_src.data_source.radius = r
continents = mlab.pipeline.surface(continents_src, color=(0, 0, 0))
Run Code Online (Sandbox Code Playgroud)

但是,当我使用鼠标与生成的 3D 窗口交互时,很难将其保持正面朝上,因为 UI 将向左或向右拖动鼠标解释为尝试旋转场景(或相机?)围绕窗口当前的垂直轴,而不是通过地球仪本身的轴。

有没有办法限制用户交互代码,以便通过设置一些 Mayavi 参数,无论轴是否垂直向上或向下,鼠标左键或右键拖动都会绕其轴旋转地球仪,或者通过将一些Python代码注册为鼠标拖动的UI事件处理程序?

python visualization scipy mayavi mayavi.mlab

5
推荐指数
1
解决办法
1922
查看次数

使用python和mayavi创建3D streamplot

目前很容易使用python和matplotlib生成2D streamplot,因为最近由Tom Flannaghan和Tony Yu将matamplot插入matplotlib.

虽然可以使用matplotlib生成某些类型的3D绘图,但目前不支持3D streamplots.然而,python绘图程序mayavi(提供基于vtk的绘图的python接口)能够使用其flow()函数的3D streamplots .

我已经创建了一个简单的python模块来对2D和3D中的数据进行流绘图,在3D数据集中没有Z斜率(所有dZ = 0),以演示我在mayavi与matplotlib有效匹配数据时所面临的绘图挑战在xy平面上.注释的代码和结果图如下所示:

import numpy, matplotlib, mayavi, matplotlib.pyplot, mayavi.mlab
#for now, let's produce artificial streamline data sets for 2D & 3D cases where x and y change by +1 at each point, while Z changes by 0 at each point:

#2D data first:
x = numpy.ones((10,10))
y = numpy.ones((10,10))
#and a corresponding meshgrid:
Y,X = numpy.mgrid[-10:10:10j,-10:10:10j]

#now 3D data with Z = 0 (i.e., I want to be …
Run Code Online (Sandbox Code Playgroud)

python plot matplotlib vtk mayavi

5
推荐指数
1
解决办法
3194
查看次数

如何在 Python 中可视化 3D delaunay 三角剖分?

我有一组 3D 点,我使用 scipy.spatial.Delaunay 来进行三角剖分/四面体化。我现在有一组所有四面体的独特面,并希望在 3D 中可视化这些面。

是否有任何 Python 库(或带有 Python 包装器的库)可以做到这一点?

python scipy vtk mayavi mplot3d

5
推荐指数
2
解决办法
6670
查看次数

使用 Python 和具有多个向量场的 tvtk 将数据保存到 VTK

我试图保存对应于相同结构网格的三组向量(速度、湍流强度和速度波动的标准偏差)。理想情况下,我希望它们成为同一个 vtk 文件的一部分,但到目前为止,我只能将其中一个放入文件中,如下所示:

sg = tvtk.StructuredGrid(dimensions=x.shape, points=pts)
sg.point_data.vectors = U
sg.point_data.vectors.name = 'U'
write_data(sg, 'vtktestWake.vtk')
Run Code Online (Sandbox Code Playgroud)

我花了几个小时寻找如何添加多个向量或标量场的示例,但失败了,所以我想我会在这里问。任何指导将不胜感激。

谢谢,

阿图尔

python vtk mayavi

5
推荐指数
1
解决办法
1677
查看次数

Mayavi 中类似 Matplotlib 的子图?

我想要做的是并排放置一对 3D 图形。 在此处输入图片说明

在 matplotlib 中,我能够像这样创建这些子图: ax1 = fig.add_subplot(121, projection='3d')

我在这里尝试使用 Mayavi 进行 3D 绘图,因为它解决了我遇到的其他一些问题,但我似乎无法找到并排绘制两个图形的方法。

这甚至可能吗?

python matplotlib mayavi

5
推荐指数
1
解决办法
2042
查看次数

Python 中的标量字段可视化

我需要在 Python 中可视化几个重叠的标量字段。我找到了mayavi图书馆来做这种情节。问题是我不明白如何为标量字段自定义颜色映射。我的想法是为每个字段设置一种颜色的阴影。我试图采用一个例子,但它不起作用。这是我使用红色阴影可视化标量场的代码:

import numpy as np
from mayavi import mlab

x, y, z = np.ogrid[-10:10:20j, -10:10:20j, -10:10:20j]
s = np.sin(x*y*z)/(x*y*z)

src = mlab.pipeline.scalar_field(s)
volume = mlab.pipeline.volume(src)

lut = np.zeros((256, 4), np.uint8)
lut[:,-1] = 255
lut[:, 0] = np.linspace(0, 255, 256)

volume.module_manager.scalar_lut_manager.lut.table = lut

mlab.draw()
mlab.view(40, 85)

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

但是,输出图始终带有标准的蓝红查找表。

python 3d visualization mayavi

5
推荐指数
1
解决办法
1990
查看次数

matplotlib Axes3D 中的 mayavi 3d 对象

我有时会因为 matplotlib 的 mplot3d 中缺少某些渲染功能而感到沮丧。在大多数情况下,我确实发现我可以在 mayavi 中得到我想要的东西,但是 matplotlib 3d 轴仍然更可取,如果只是为了美观,比如 LaTeX 化的标签和与我的其他图形的视觉一致性。

我的问题是关于明显的 hack:是否可以在没有轴的情况下在 Mayavi 中绘制一些 3d 对象(表面或 3d 散点图或其他),导出该图像,然后将其放置在具有正确大小、方向、坐标的 matplotlib Axes3D 中投影等?任何人都可以想出实现这一目标需要什么的大纲,或者甚至提供一个框架解决方案?

前段时间我摆弄了这个,发现我在导出透明背景 mayavi 图形并将其放置在空的 matplotlib Axes3D(带有刻度、标签等)方面没有问题,但我并没有得到什么mayavi 和 matplotlib 的相机配置相匹配。简单地将方位角、仰角和距离这三个常用参数在两种环境中设置为相等并不能解决问题;大概需要的是对渲染整个场景的透视(或其他)变换进行一些考虑,而我在该领域相当无能为力。

看起来这可能有用:http : //docs.enthought.com/mayavi/mayavi/auto/example_mlab_3D_to_2D.html

python matplotlib mayavi mplot3d

5
推荐指数
1
解决办法
606
查看次数

在 Windows 10 中安装 Mayavi for Python 3.7.1

在 Windows 10 下,我正在尝试运行包含该行的 Python 脚本

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

因此我试图通过运行来安装 Mayavi

pip install mayavi
Run Code Online (Sandbox Code Playgroud)

从 Windows PowerShell。然后我得到

Collecting mayavi
  Using cached https://files.pythonhosted.org/packages/83/9e/293ba57353ed258c2f64d54bf00ca1447c1f38f4eb60d0e762ddec57bf51/mayavi-4.6.2.tar.bz2
Collecting apptools (from mayavi)
  Using cached https://files.pythonhosted.org/packages/78/84/64764e2c87fcb7ad7521bdabc7c44c109b80691f94218cbddd5df2ee682c/apptools-4.4.0.tar.bz2
Collecting envisage (from mayavi)
  Using cached https://files.pythonhosted.org/packages/ea/2a/7efcd2c44a638a5e3e65e39f7e5bd4cf952ef4ffc71768730cf19fef1e4e/envisage-4.7.0-py3-none-any.whl
Requirement already satisfied: numpy in c:\users\adria\appdata\local\programs\python\python37-32\lib\site-packages (from mayavi) (1.15.4)
Collecting pyface>=6.0.0 (from mayavi)
  Using cached https://files.pythonhosted.org/packages/45/fe/7150742f7053cb5082f15704c064a5c683f42dfc00411ce173287651e33a/pyface-6.0.0.tar.gz
Collecting pygments (from mayavi)
  Using cached https://files.pythonhosted.org/packages/13/e5/6d710c9cf96c31ac82657bcfb441df328b22df8564d58d0c4cd62612674c/Pygments-2.3.1-py2.py3-none-any.whl
Collecting traits>=4.6.0 (from mayavi)
  Using cached https://files.pythonhosted.org/packages/56/47/03f50e82e1ff1e8a602c5f2cf12f08675f79a7169629fe4ce521e59d265f/traits-4.6.0.tar.bz2
Collecting traitsui>=6.0.0 (from mayavi)
  Using cached https://files.pythonhosted.org/packages/f2/06/3ad35a78e1ca82d762e2d9ffe9ed6c9dd405caa340066052d7ec186b9b1b/traitsui-6.0.0.tar.gz
Collecting vtk (from mayavi)
  Could not …
Run Code Online (Sandbox Code Playgroud)

python vtk python-3.x mayavi

5
推荐指数
1
解决办法
4182
查看次数

PyQt5 无法作为 Mayavi 使用 Python 3.6 的“合适的 UI 工具包”

我想运行 SfePy 演示,但使用 Mayavi 显示时出现问题。请参阅http://sfepy.org/doc-devel/installation.html#requirements

我有:

  • 创建了一个 anaconda Python 3.6 环境(根据这个答案)使用conda create --name SfePy36 python=3.6
  • 安装 mayavi 使用 conda install -c conda-forge mayavi

  • 安装 pip3 使用python3 get-pip.py(从这里

  • 安装 PyQt5 使用 pip3 install PyQt5

我不知道如何独立检查 PyQt5 是否安装正确。如果我重复,pip3 install PyQt5它会告诉我它已经安装,但这并不意味着它已正确完成或位于正确的位置。


当我运行下面非常简单的 mayavi 测试时,出现以下错误。

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/david/anaconda3/envs/SfePy36/lib/python3.6/site- packages/mayavi/tools/sources.py", line 1162, in scalar_field
    return tools.add_dataset(data_source.m_data, name, **kwargs)
  File "/Users/david/anaconda3/envs/SfePy36/lib/python3.6/site-packages/mayavi/tools/tools.py", line 91, in add_dataset
engine …
Run Code Online (Sandbox Code Playgroud)

python pyqt mayavi pyqt5

5
推荐指数
1
解决办法
2964
查看次数

如何在 Pycharm 中将 matplotlib 中的默认后端从“QtAgg”更改为“Qt5Agg”?

Qt5Agg必须使用mayavi3D 可视化包。我已在单独的复制环境中安装PyQt5并使用 pip 。然后,默认后端从 更改为。这有点奇怪,因为在另一台 PC 上的早期安装中,默认值直接更改为. 我总是使用 python 控制台中的以下命令检查后端:mayavicondaTkAggQtAggQt5Agg

import matplotlib 
matplotlib.get_backend()
Run Code Online (Sandbox Code Playgroud)

即使后端是“QtAgg”,我也可以mayavi从终端使用而不会出现任何问题,但在 Pycharm 中使用时则不行。这里我得到一个无响应的空窗口(下图):

无响应窗口的图像

Qt5Agg我已经能够通过显式使用而不是在调用QtAgg之前摆脱这个问题plt

import matplotlib
matplotlib.use('Qt5Agg')
import matplotlib.pyplot as plt
Run Code Online (Sandbox Code Playgroud)

但我更喜欢一种比在我编写的每个脚本中使用上述内容更好的方法。正如我之前提到的,我已经安装了 Mayavi,并在另一台 PC 的 Pycharm 中成功使用了它,默认后端是“Qt5Agg”,因此不需要显式更改后端。

有什么明显的事情是我忽略的吗?您能否让我知道使用 pip安装后将QtAggmatplotlib的默认后端更改为 的方法?Qt5AggPyQt5

提前致谢 !!

python matplotlib pycharm mayavi pyqt5

5
推荐指数
1
解决办法
2841
查看次数

标签 统计

mayavi ×10

python ×10

matplotlib ×4

vtk ×4

mplot3d ×2

pyqt5 ×2

scipy ×2

visualization ×2

3d ×1

mayavi.mlab ×1

plot ×1

pycharm ×1

pyqt ×1

python-3.x ×1