是否可以使用 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 上内联绘图?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在pyqtgraph中调整句柄的大小?

是否可以在不使用 QLayout 的情况下将 pyqtgraph 添加到 PySide 应用程序?

是否有用于自动范围的 PyQtGraph 参数来限制可见的点数?

如何使用 pyqtgraph 和 QSerialPort 创建实时图?

如何像使用 Dpi 一样在 pyqtgraph 中保存高质量的图形图像?

PyQtGraph & OpenGL:如何在两个坐标之间创建一个球体?