Getting PySide to work with matplotlib

前端 未结 3 607
暖寄归人
暖寄归人 2020-12-05 01:19

I have tried running the example code on the SciPy website, but I get this error:

Traceback (most recent call last):
  File \".\\matplotlibPySide.py\", line          


        
3条回答
  •  無奈伤痛
    2020-12-05 01:43

    I think you may have posted this on the matplotlib mailing list. But just in case someone else is looking for the answer. The best option is to use the master branch on Github, but if you can't or don't know how to work the Github version you can use the following code to render a plot in PySide.

    import numpy as np
    from matplotlib import use
    use('AGG')
    from matplotlib.transforms import Bbox
    from matplotlib.path import Path
    from matplotlib.patches import Rectangle
    from matplotlib.pylab import *
    from PySide import QtCore,QtGui
    
    rect = Rectangle((-1, -1), 2, 2, facecolor="#aaaaaa")
    gca().add_patch(rect)
    bbox = Bbox.from_bounds(-1, -1, 2, 2)
    
    for i in range(12):
        vertices = (np.random.random((4, 2)) - 0.5) * 6.0
        vertices = np.ma.masked_array(vertices, [[False, False], [True, True], [False, False], [False, False]])
        path = Path(vertices)
        if path.intersects_bbox(bbox):
            color = 'r'
        else:
            color = 'b'
        plot(vertices[:,0], vertices[:,1], color=color)
    
    app = QtGui.QApplication(sys.argv)
    gcf().canvas.draw()
    
    stringBuffer = gcf().canvas.buffer_rgba(0,0)
    l, b, w, h = gcf().bbox.bounds
    
    qImage = QtGui.QImage(stringBuffer, 
                          w,
                          h,
                          QtGui.QImage.Format_ARGB32)
    
    scene = QtGui.QGraphicsScene()
    view = QtGui.QGraphicsView(scene)
    pixmap = QtGui.QPixmap.fromImage(qImage)
    pixmapItem = QtGui.QGraphicsPixmapItem(pixmap)
    scene.addItem(pixmapItem)
    view.show()
    
    app.exec_()
    

提交回复
热议问题