python - pyqtgraph:保存/导出 3d 图

标签 python qt 3d pyqtgraph

我用 pyqtgraph 绘制了一个 3D 图形,我想保存/导出它。 右键单击 3D 图不会打开任何允许我保存图的上下文菜单。 http://www.pyqtgraph.org/documentation/exporting.html 处的文档告诉我如何从程序中保存/导出,但按照 3D 说明进行操作会导致黑色保存图像。

这是我的代码的相关部分:

from pyqtgraph.Qt import QtCore, QtGui
import pyqtgraph as pg
import pyqtgraph.opengl as gl
import numpy as np
import pyqtgraph.exporters

app = QtGui.QApplication([])
w = gl.GLViewWidget()
w.show()
w.setCameraPosition(distance=50)

g = gl.GLGridItem()
g.scale(2,2,1)
g.setDepthValue(10) 
w.addItem(g)

z=np.genfromtxt('../mydata.txt') 
p1 = gl.GLSurfacePlotItem(z=z, shader='shaded', color=(0.5, 0.5, 1, 1))

p1.scale(0.1, 0.1, 0.1)
p1.translate(-0, 0, 0)
w.addItem(p1)

w.grabFrameBuffer().save('test.png')

if __name__ == '__main__':
    import sys
    if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
        QtGui.QApplication.instance().exec_()

mydata.txt 包含浮点值的二维数组。该图正确显示在我的屏幕上。 有没有人成功地从 pyqtgraph 程序保存/导出 3D 图或者能够发现上面代码中的问题? (Linux,在 anaconda3 中使用 Qt 版本 4.8.7)。

最佳答案

这是帮助我解决问题的相关信息: https://groups.google.com/forum/#!msg/pyqtgraph/dKT1Z3nIeow/OErAgRPAbB8J

即:

d = w.renderToArray((1000, 1000))
pg.makeQImage(d).save(filename)

下面是创建 3D 绘图并保存它的完整代码:

from pyqtgraph.Qt import QtCore, QtGui
import pyqtgraph as pg
import pyqtgraph.opengl as gl
import numpy as np
import pyqtgraph.exporters

app = QtGui.QApplication([])
w = gl.GLViewWidget()
w.show()
w.setCameraPosition(distance=50)

g = gl.GLGridItem()
g.scale(2,2,1)
g.setDepthValue(10) 
w.addItem(g)

z=np.genfromtxt('../../TestData/textAsImage.txt') 
p1 = gl.GLSurfacePlotItem(z=z, shader='shaded', color=(0.5, 0.5, 1, 1))

p1.scale(0.1, 0.1, 0.1)
p1.translate(-0, 0, 0)
w.addItem(p1)

filename = 'yourfilename.png'
d = w.renderToArray((1000, 1000))
pg.makeQImage(d).save(filename)

if __name__ == '__main__':
    import sys
    if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
        QtGui.QApplication.instance().exec_()

关于python - pyqtgraph:保存/导出 3d 图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37337281/

相关文章:

python - SQL Server 2016 会通过外部脚本支持 Python 吗?

javascript - Three.js 四元数 slerp 在极点附近给出了糟糕的结果

math - 如何计算像素着色器深度以将在点 Sprite 上绘制的圆渲染为与其他对象相交的球体?

3d - 计算法线矩阵的正确方法?

python - 两个函数之间的填充区域

python - 填充源 - 目标对和列表中的标志

python - 是否可以更改 QTableWidget 行标签的颜色?

c++ - 从 CSV C++ 中提取 double 值时出现意外结果

c++ - QMutex:销毁锁定的互斥体

python - venv vs virtualenv - 为什么 venv 不使用当前的 pip 和 setuptools?