标签: vispy

如何在python程序的简单UI中显示实时图形?

我有一个复杂的算法,可以更新存储在数组中的3个直方图.我想调试我的算法,所以我想在用户界面中将数组显示为直方图.最简单的方法是什么?(快速应用程序开发比优化代码更重要.)

我有一些Qt(在C++中)的经验和matplotlib的一些经验.

(我将暂时搁置这个问题一两天,因为我很难在没有更多经验的情况下评估解决方案.希望社群的投票能帮助我们选择最佳答案.)

python pyqt matplotlib vispy

18
推荐指数
2
解决办法
3万
查看次数

如何从Vispy中的屏幕坐标获取世界坐标

我不知道如何从屏幕坐标到世界坐标.我正在使用VisPy,我想在3D中实现光线跟踪和拾取能力.

我根据立方体示例准备了一些代码.下面的代码通过更改z值并在''on_mouse_press''方法中打印3D坐标来通过屏幕发送粗糙的光线.但结果不正确.如果我点击立方体的右上角,沿着光线的某个地方应该打印(3,3,3),但事实并非如此.任何人都可以帮我吗?

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# vispy: gallery 50
"""
This example shows how to display 3D objects.
You should see a colored outlined spinning cube.
"""

import numpy as np
from vispy import app, gloo
from vispy.util.transforms import perspective, translate, rotate

vert = """
// Uniforms
// ------------------------------------
uniform   mat4 u_model;
uniform   mat4 u_view;
uniform   mat4 u_projection;
uniform   vec4 u_color;

// Attributes
// ------------------------------------
attribute vec3 a_position;
attribute vec4 a_color;
attribute vec3 a_normal;

// Varying …
Run Code Online (Sandbox Code Playgroud)

python 3d visualization pyopengl vispy

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

来自 NumPy 数组的逐点 VisPy 动画

我想知道使用 VisPy是否有可能,或者我是否应该开始寻找其他替代方案。

这是发生了什么 - 我正在写一篇关于狭义相对论的一些类似悖论的情况的本科论文。我所做的基本上就是这样,我将在 python 中使用一些脚本生成有序三元组(3D 空间中的点)的数组,这些数组随时间变量(“时间变量”实际上是速度,但它会计数)就像时间一样)。我需要对这些点进行动画处理,在更简单的情况下,它们将形成棒、2D 方块和 3D 立方体,当然还会生成 .gif 或类似的文件。

编码绝对不是我的强项,但我已经使用 Python 有一段时间了。我已经研究过 VisPy 并且喜欢它使用 OpenGL 功能,并且通常喜欢各种示例的好坏(我可以开始工作)。

我的问题是: VisPy 是我需要做的最好的事情吗?我很难弄清楚如何让 VisPy 将单个点制作成 3D 对象等等 - 我已经玩过各种 Geometry 东西,比如 create_cube,但看起来我不能只移动周围的顶点。

如果有人对从哪里开始有任何建议,或者 Mayavi 或其他事情是否更容易,请告诉我。

更新:我确实想出了如何制作一个非常漂亮(且简单)的 3D 立方体轮廓,这正是我想要的。我仍然不确定如何让它动画,因为使用 VisPy 制作动画的例子大不相同。

有没有人有任何方向?在代码中,需要发生的是初始点数组需要更新每一帧(点可以在脚本中导入或计算,无论哪种方式)

import numpy as np
import vispy
import vispy.scene
from vispy.scene import visuals
from vispy import app

canvas = vispy.scene.SceneCanvas(keys='interactive', show=True)
view = canvas.central_widget.add_view()

# generate data
pos = np.array([[0, 0, 0], [0.5, 0.5, 0.5], …
Run Code Online (Sandbox Code Playgroud)

python animation numpy mayavi vispy

6
推荐指数
1
解决办法
1497
查看次数

vispy visual.HistogramVisual

从 examples/basics/visuals/graphy.py 开始,我尝试显示直方图但失败了:

from vispy import app, visuals
import wx
import numpy as np

class snrHistogram(app.Canvas):
    def __init__(self, *args, **kwargs):
        app.Canvas.__init__(self, title='histogram fail',
                            keys="interactive", size=(600, 600))

        self.snr_hist = visuals.HistogramVisual(np.arange(256), bins=4, color='r', orientation='v')
        self.label = visuals.TextVisual("hi", color='blue', pos=[50, 50, 0])
        self.configure_transforms()
        self.show()

    def configure_transforms(self):
        vp = (0, 0, self.physical_size[0], self.physical_size[1])
        self.context.set_viewport(*vp)
        self.label.transforms.configure(canvas=self, viewport=vp)
        self.snr_hist.transforms.configure(canvas=self, viewport=vp)

    def on_resize(self, event):
        self.configure_transforms()

    def on_mouse_wheel(self, event):
        self.update()

    def on_draw(self, event):
        self.snr_hist.draw()
        self.label.draw()
        self.update()

    def on_close(self, event):
        self.close()

if __name__ == '__main__':
    s = snrHistogram()
    app.run() …
Run Code Online (Sandbox Code Playgroud)

python python-3.x vispy

6
推荐指数
1
解决办法
116
查看次数

如何在PyQt中嵌入vispy图?

我试图将一个vispy情节(更具体地说,一个Vispy SceneCanvas)作为QWidget嵌入到PyQt4中.我认为答案是这样的:

from PyQt4.QtCore import *
from PyQt4.QtGui import *
import vispy.mpl_plot as plt

app = QApplication(sys.argv)
win = QMainWindow()
plt.plot([1,2,3,4], [1,4,9,16])
vispyCanvas=plt.show()[0]
win.setCentralWidget(vispyCanvas)
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试这个时,最后一行给出了vispyCanvas类型SceneCanvas而不是类型的预期错误QWidget.当我print(vispyCanvas),它打印出来<Vispy canvas (PyQt4 (qt) backend) at 0x142bcb00L>,这就是为什么我怀疑应该可以将它或它的一个属性作为QWidget对象处理.

python plot pyqt4 pyside vispy

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

如何在vispy中选择距离点击点最近的标记?

vispy库中,我有一个显示为标记的点列表,我想更改最接近单击点的点的颜色(或仅获取其索引)。

我可以通过 event.pos 获取点击点的像素,但我需要它的实际坐标将其与其他坐标进行比较(或获取其他标记的像素点以将其与事件位置进行比较)。

我有这段代码来获取最近的点索引。它接受数组和点的输入(单击一个)

def get_nearest_index(pos,p0):
    count=0
    col =[(1,1,1,0.5) for i in pos]
    dist= math.inf
    ind=0
    for i in range(len(pos)):
        d = (pos[i][0]-p0[0])**2+(pos[i][1]-p0[1])**2
        if d<dist:
            ind=i
            dist=d
    return ind
Run Code Online (Sandbox Code Playgroud)

但问题是我必须在同一坐标系中传递它们。打印出来event.pos返回像素,例如:[319 313]而我的位置在pos数组中是:

[[-0.23801816  0.55117583 -0.56644607]
 [-0.91117247 -2.28957391 -1.3636486 ]
 [-1.81229627  0.50565064 -0.06175591]
 [-1.79744952  0.48388072 -0.00389405]
 [ 0.33729051 -0.4087148   0.57522977]]
Run Code Online (Sandbox Code Playgroud)

所以我需要将其中一个转换为另一个。变换就像

tf = view.scene.transform
p0 = tf.map(pixel_pt)
print(str(pixel_pt) + "--->"+str(p0))
Run Code Online (Sandbox Code Playgroud)

打印出来[285 140 0 1]--->[ 4.44178173e+04 -1.60156369e+04 0.00000000e+00 1.00000000e+00]的内容与点相差甚远。

python simulation vispy

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

如何在 Vispy 3d 图中获取点的位置?

我是 VisPy 的初学者。

我想做的就是:

单击该点,该点将改变颜色并打印该点的位置 (x,y,z)。

但我找不到如何做到这一点。

这是我的代码。

import numpy as np
import sys
from vispy import app, visuals, scene

class Canvas(scene.SceneCanvas):
    """ A simple test canvas for testing the EditLineVisual """

    def __init__(self):
        scene.SceneCanvas.__init__(self, keys='interactive',
                                   size=(800, 800), show=True)

        # # Create some initial points
        self.unfreeze()
        # Add a ViewBox to let the user zoom/rotate
        self.view = self.central_widget.add_view()
        self.view.camera = 'turntable'
        self.view.camera.fov = 30
        self.show()
        self.selected_point = None
        scene.visuals.GridLines(parent=self.view.scene)
        self.freeze()

    def on_mouse_press(self, event):
        print(event.pos) # How to convert this pos …
Run Code Online (Sandbox Code Playgroud)

python 3d scatter vispy

4
推荐指数
1
解决办法
925
查看次数

如何在anaconda python中导入OpenGL?

我在anaconda python上使用ipython notebook但我不知道如何安装或导入opengl.谁能帮我解决这个问题?我在linux xubuntu上使用anaconda.抱歉英文不好.

linux python-2.7 ipython-notebook anaconda vispy

3
推荐指数
2
解决办法
7617
查看次数

如何在PyQt5框架中嵌入vispy画布

嘿,我想在pyqt5生成的Gui中嵌入vispy canvas的输出窗口。我对vispy不太了解,因此请事先帮助。

python pyqt python-3.x pyqt5 vispy

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

如何将VisPy结果导出为png图像

是否可以保存使用VisPy制作的图像?也许使用vispy.io.imsave或vispy.write_png?

此外,可以使用vispy.mpl_plot在vispy中绘制matplotlib数字,但是可以在matplotlib中使用vispy图像吗?

在任何情况下,我都需要使用VisPy生成一个图像对象,但我没有找到任何示例.

python visualization vispy

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

使用 vispy 绘制 3d 隐式方程

由于服务器GPU限制,我们无法使用 K 渲染 上的隐式方程VPS,下面是我们用来从 中的方程生成 3D 模型的示例代码mayavi

import numpy as np
from mayavi import mlab

mlab.clf()
x, y, z = np.mgrid[-2.5:2.5:.125, -2.5:2.5:.125, -2.5:2.5:.125]
a,b,c = 0.0,-5.0,11.8
values = x**4+y**4+z**4+a*(x**2+y**2+z**2)**2+b*(x**2+y**2+z**2)+c
mlab.contour3d(x, y, z, values, contours=[0], color=(.1,1,.5))

mlab.savefig("shape.obj")
Run Code Online (Sandbox Code Playgroud)

以 3D 形式输出此形状

由 mayavi 渲染的 3d 方程

我的问题是,我怎样才能完成同样的事情vispy另一个 python 模块(如果存在)完成同样的事情

我们没有显卡VPS,我们在 Windows Server 2008 上使用 python 3.5.1 (anaconda)(不可能使用 linux),并且我们已替换opengl32.dll为 system32 中的 mesa(GL 版本 3.0 mesa 10.2.8)(VTK 抛出错误 GL 版本 2.1 及其gpu_shader4扩展不受支持...)

python 3d mayavi vispy

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