Hi,

I have successfully used both pyqtgraph and matplotlib together in a data 
processing/analysis project. I used pyqtgraph for the most part, all the 
interactive plots etc, and then matplotlib for the final step of generating 
publication-quality plots. It's something I always wanted to open-source 
but never really sorted out the details for that, but I'll try to summarise 
here. Perhaps email me directly if you have problems and I may be able to 
sort out and supply some better code.

Imports look something like:

# Do usual Qt imports, pyqtgraph and matplotlib
from PyQt5 import QtWidgets, uic
import pyqtgraph as pg
import matplotlib as mpl
mpl.use('Qt5Agg')
# For matplotlib plots in the GUI
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as 
FigureCanvas
# For matplotlib plot exports to pdf
from matplotlib.backends.backend_pdf import FigureCanvasPdf, PdfPages

In relevant UI class, set up a matplotlib FigureCanvas widget to render 
onto:

self.resultplot_figureCanvas = 
FigureCanvas(mpl.figure.Figure(constrained_layout=True))
self.resultplots_groupBox.layout().addWidget(self.resultplot_figureCanvas)

In appropriate place, render matplotlib plot to the FigureCanvas instead of 
letting mpl.pyplot create one for you:

fig = self.resultplot_figureCanvas.figure
fig.clear()
ax = fig.subplots(1, 1)
ax.plot([1, 2, 3], [4, 5, 6])
#...
self.resultplot_figureCanvas.draw()

If you want to render to a pdf, then render to a FigureCanvasPdf something 
like:

canvas = FigureCanvasPdf(mpl.figure.Figure(constrained_layout=True, 
figsize=(figwidth, figheight)))
fig = canvas.figure
ax = fig.subplots(1, 1)
ax.plot([1, 2, 3], [4, 5, 6])
# ...
fig.savefig("filename.pdf", bbox_inches="tight", dpi=150, 
metadata=metadata_pdf)

The application is a little old now (Qt5 etc), but hopefully that might 
give you something to work with.

Patrick


On Wednesday, 18 May 2022 at 5:50:45 am UTC+9:30 ML___ wrote:

> Hello,
>
> Thanks to all those who've worked on PyQtGraph.  I switched to it for a 
> real time plotting app as I was bogging down Matplotlib.  
> It's easy to use, highly flexible, and fast!
>
> I'm seeing a similar issue as was reported in 2012, where importing 
> pyqtgraph stops matplotlib from showing plots:
>
> --------------------my code------------------------------
> import matplotlib.pyplot as plt
> plt.ion()
> plt.show()
> plt.plot([1,2,3,4])    # 1) call succeeds, interactive plot window is shown
> import pyqtgraph  # 2) after this call the existing plot window from (1) 
> is unresponsive
> plt.plot([4,3,2,1])    # 3) function succeeds as in (1), but plot window 
> is not updated, and remains unresponsive
> -----------------------------------------------------------------
>
> I'm running Debian Testing (bookworm) recently updated
> Python 3.10.4
> pyqtgraph.__version__  = 0.12.4
> matplotlib.__version__  = 3.5.1
>
> Regards,
> Michael
>
>
>
>
>
>
> On Monday, October 8, 2012 at 10:27:35 PM UTC-7 Jianbao Tao wrote:
>
>> Hi,
>>
>> I am playing with pyqtgraph recently. I am impressed by its speed. :-) 
>> However, there is one thing that really bothers me: It doesn't appear  to 
>> be compatible with matplotlib, which is very strange, considering the fact 
>> that pyqtgraph and matplotlib have their own name space. Here is a snippet 
>> that demonstrates that problem.
>>
>> #--------------------- code ----------------------------------
>> import matplotlib.pyplot as plt
>> import numpy as np
>> x = np.arange(100)
>> plt.plot(x)  # Working
>> plt.show()
>>
>> import pyqtgraph
>> plt.plot(x)  # Not working
>> #----------------------- end of code -------------------------
>>
>> Cheers,
>> Jianbao
>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"pyqtgraph" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/pyqtgraph/efb4b15b-f47d-487e-a4d6-20567d965372n%40googlegroups.com.

Reply via email to