【问题标题】:Mayavi imshow obscures quiver3dMayavi imshow 掩盖了 quiver3d
【发布时间】:2020-07-15 03:59:24
【问题描述】:

我正在尝试将quiver3d 图覆盖在mayavi 中的imshow 图上。我使用的代码如下所示:

from mayavi import mlab
import numpy as np
    
img = np.random.uniform(0, 255, size=(512, 512)).astype(np.int)

N = 10000
event_size = 2
xs = np.random.uniform(img.shape[1], size=N)
ys = np.random.uniform(img.shape[0], size=N)
ts = np.sort(np.random.uniform(1000, size=N))
ps = np.random.randint(0,2,size=N)

mlab.imshow(img, colormap='gray', extent=[0, img.shape[0], 0, img.shape[1], ts[0], ts[1]])
colors = [0 if p>0 else 240 for p in ps]
ones = np.ones(len(xs))
p3d = mlab.quiver3d(ys, xs, ts, ones, ones,
            ones, scalars=colors, mode='sphere', scale_factor=event_size)
p3d.glyph.color_mode = 'color_by_scalar'

p3d.module_manager.scalar_lut_manager.lut.table = colors
mlab.draw()
mlab.show()

我遇到的问题是imshow 图像似乎完全掩盖了quiver 情节,即使“箭袋”位于图像顶部也是如此。举个例子,一个 GIF:

我做错了什么?非常感谢!

==== 编辑 ==== 这也是我实际用例中的 GIF,我认为它比上面的最小示例更好地说明了问题:

【问题讨论】:

  • mlab.draw() 对我不起作用。我在开始时使用mlab.figure()mlab.show() 而不是.draw(),结果对我来说看起来不错。
  • 哎呀,我忘了在我的工作示例中输入mlab.show,我实际上在我的代码中使用它。我试图在开头放置mlab.figure,但我遇到了同样的问题。你说它对你有用吗?可能是渲染引擎的问题?
  • 对我来说是的,结果看起来符合预期。我在 Mac 和 Linux 上试过。见here。另请注意,工具栏中有一个用于parallel projection 的按钮。
  • 谢谢,这对修复 bug 非常有帮助,我猜这将在于我的 mayavi 正在使用的渲染后端。
  • python:3.7.7,mayavi:4.7.1

标签: python mayavi


【解决方案1】:

好的,所以最终解决方案是切换到 nvidia 图形。我在配备 GeForce GTX 1050 maxQ GPU 和英特尔板载显卡的笔记本电脑上运行代码。使用板载显卡 (sudo prime-select intel) 时,我得到了错误,当我切换到专用显卡 (sudo prime-select nvidia) 时,我得到了所需的输出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多