<div dir="ltr">You should also look at pyqtgraph (<a href="http://www.pyqtgraph.org/">http://www.pyqtgraph.org</a>) which places a premium on speed.<div><br></div><div>Depending on exactly how much data you have and exactly how fast you need to go, using blitting it Matplotlib it may be possible to eek out a bit more performance.<br><div><br></div><div>Tom</div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Sep 22, 2019 at 8:03 PM V. Armando Sole <<a href="mailto:sole@esrf.fr">sole@esrf.fr</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hello,<br>
<br>
Perhaps you want to give a try at the silx library <br>
(<a href="http://www.silx.org/doc/silx/latest/" rel="noreferrer" target="_blank">http://www.silx.org/doc/silx/latest/</a>). I provides high-level PyQt <br>
visualization widgets with a dual backend (matplotlib and PyOpenGL) so <br>
that one does not need to know any OpenGL to get the performance.<br>
<br>
Best regards,<br>
<br>
Armando<br>
<br>
On 22.09.2019 17:07, <a href="mailto:kristof.mulier@telenet.be" target="_blank">kristof.mulier@telenet.be</a> wrote:<br>
> Hi,<br>
> <br>
> I'm building an application in PyQt5 for which I need to draw 2D live<br>
> graphs. I'm looking for a way to render them with the GPU.<br>
> <br>
> 1. FIRST APPROACH<br>
> <br>
> ---------------------<br>
> <br>
> My first approach was embedding matplotlib into PyQt5. Matplotlib is<br>
> not so fast, because _it relies on CPU-rendering only_.<br>
> <br>
> 2. SECOND APPROACH<br>
> <br>
> ------------------------<br>
> <br>
> I build my own PyQt5 widget and override the paintEvent() method to<br>
> draw a few thousand lines with the QPainter() to display the live<br>
> graph. The graph points are stored in numpy arrays. I simply draw<br>
> lines between the points. Unfortunately,  QPainter() relies on the<br>
> CPU.<br>
> <br>
> Right now, it looks like I have several options for GPU-based<br>
> rendering:<br>
> <br>
>  - QOPENGLWIDGET<br>
>  (see <a href="https://doc.qt.io/qt-5/qopenglwidget.html" rel="noreferrer" target="_blank">https://doc.qt.io/qt-5/qopenglwidget.html</a>). From what I read on<br>
> the Qt docs, it looks too good to be true. I would simply need to<br>
> subclass QOpenGLWidget instead of QWidget. Apparently, I eveb don't<br>
> have to change anything in the paintEvent() method. Is this real?<br>
> Where are the pitfalls?<br>
> <br>
>  - PYOPENGL<br>
> Python bindings for OpenGL. I have no OpenGL experience. I found the<br>
> following tutorial: <a href="https://www.labri.fr/perso/nrougier/python-opengl/" rel="noreferrer" target="_blank">https://www.labri.fr/perso/nrougier/python-opengl/</a><br>
> . Great, but I'm afraid to spend a lot of time on this. When I scroll<br>
> through the tutorial, it appears to me that the focus is on 3D shapes.<br>
> I don't need that.<br>
> <br>
>  - QGRAPHICSVIEW<br>
> <br>
> I remember reading something about QGraphicsView() in a StackOverflow<br>
> answer. It would be a Qt class to draw lots of shapes. But can it<br>
> handle thousands of tiny lines that form the live graph? Does it rely<br>
> on the CPU or the GPU for rendering?<br>
> <br>
> Could you point me in the right direction please?<br>
> _______________________________________________<br>
> PyQt mailing list    <a href="mailto:PyQt@riverbankcomputing.com" target="_blank">PyQt@riverbankcomputing.com</a><br>
> <a href="https://www.riverbankcomputing.com/mailman/listinfo/pyqt" rel="noreferrer" target="_blank">https://www.riverbankcomputing.com/mailman/listinfo/pyqt</a><br>
_______________________________________________<br>
PyQt mailing list    <a href="mailto:PyQt@riverbankcomputing.com" target="_blank">PyQt@riverbankcomputing.com</a><br>
<a href="https://www.riverbankcomputing.com/mailman/listinfo/pyqt" rel="noreferrer" target="_blank">https://www.riverbankcomputing.com/mailman/listinfo/pyqt</a><br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature">Thomas Caswell<br><a href="mailto:tcaswell@gmail.com" target="_blank">tcaswell@gmail.com</a></div>