【问题标题】:pyqtgraph: save / export 3d graphpyqtgraph:保存/导出 3d 图形
【发布时间】:2016-09-17 03:55:41
【问题描述】:

我已经用 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)。

【问题讨论】:

    标签: python qt 3d pyqtgraph


    【解决方案1】:

    这是帮助我解决问题的相关信息: 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_()
    

    【讨论】:

    • 能否分享一下 textAsImage.txt 文件的样子
    猜你喜欢
    • 2021-03-19
    • 2023-03-29
    • 2022-01-22
    • 2017-04-08
    • 2019-02-14
    • 2014-07-07
    • 1970-01-01
    • 2016-04-20
    • 2021-01-13
    相关资源
    最近更新 更多