是否可以使用 pyqtgraph 函数在 Jupyter Notebook 上内联绘图?
Posted
技术标签:
【中文标题】是否可以使用 pyqtgraph 函数在 Jupyter Notebook 上内联绘图?【英文标题】:Is it possible to use pyqtgraph functions to plot inline on Jupyter Notebook? 【发布时间】:2021-03-09 10:23:51 【问题描述】:我正在尝试使用 Pyqtgraph 在 Jupyter 笔记本上绘制一些图像数组,但我遇到了一些问题。基本上,我使用的是以下代码:
import pyqtgraph as pg
%gui qt
pg.image(recon_array_a[0])
这给了我我需要的东西,但正在新窗口中打开它。有没有办法打开内联?例如,可以在 Jupyter 笔记本上使用 matplotlib 吗?
【问题讨论】:
【参考方案1】:我不知道有一种方法可以让交互式 qt 应用程序(例如 pyqtgraph)在 jupyter notebook 中内联访问。
如果您只对没有任何交互性的“原始图像”感兴趣,这里有一个解决方法:
使用 pyqtgraph 生成图像 将此图像导出到临时文件 显示临时文件这是一个快速演示(不再需要 %gui qt)
import pyqtgraph as pg
import pyqtgraph.exporters
import numpy as np
from IPython.display import display, Image
def show_image(data):
img = pg.image(data)
file_name = "temp.png"
exporter = pg.exporters.ImageExporter(img.imageItem).export(file_name)
img.close()
display(Image(filename=file_name))
data = np.array([[1,0],[2,3]])
show_image(data)
【讨论】:
你好克里斯蒂安。谢谢您的回答。我的意思是 pyqtgraph,因为我在桌面应用程序中使用了这个库(效果非常好)。与图像交互对我的目标非常重要。你知道是否有另一个库可以像 pyqtgraph 对桌面应用程序那样处理它?我尝试了 matplotlib,但它并没有给我带来很好的性能。 @GabrielSchubert 对于 Jupyter,我只知道 matplotlib,它可以进行交互 (towardsdatascience.com/…)。如果你想要“一个带有 pyqtgraph 的桌面应用程序”,为什么不直接使用 pyqt 来创建一个具有嵌入式 pyqtgraph 功能的应用程序呢?还是我误解了您对“桌面应用程序”的期望?【参考方案2】:此线程中的贡献者取得了一些成功
https://groups.google.com/g/pyqtgraph/c/KImnC-hOTMA
QT 控制台也可能有助于在 Jupyter 和 Python 之间进行通信
https://qtconsole.readthedocs.io/en/stable/
或者
https://bokeh.org/ 和 https://plotly.com/ 可能是您可以考虑的选项。
【讨论】:
以上是关于是否可以使用 pyqtgraph 函数在 Jupyter Notebook 上内联绘图?的主要内容,如果未能解决你的问题,请参考以下文章
是否可以在不使用 QLayout 的情况下将 pyqtgraph 添加到 PySide 应用程序?
是否有用于自动范围的 PyQtGraph 参数来限制可见的点数?
如何使用 pyqtgraph 和 QSerialPort 创建实时图?