jupyter notwbook 中的几个交互式绘图单元

问题描述 投票:0回答:1

任务:我正在做一些分析,需要几张图。第一个必须是可调整大小和可缩放的。根据我在这一图中看到的内容,我在新单元格中绘制了其他图。这些情节不一定需要互动。重要的是: 1-能够随时查看并处理第一个图, 2-可视化单元格中的其他图,以及 3-能够运行“重新启动并运行全部”

我尝试了

%matplotlib nbagg
第一个情节。这样,当我逐个单元运行代码时,第一个图确实是交互式的。但是,当运行下一个绘图单元格时,其他绘图将在第一个单元格中显示,覆盖它,并且无法同时检查这些绘图。事实上,“重新启动并运行全部”将仅显示最后一个图。

我尝试使用

%matplotlib inline
%matplotlib auto
plt.ioff()
在第一个单元格之后停止交互式显示,但没有成功。

我想知道是否有人可以帮助我。 先谢谢你了

这是一个最小的可重现示例

笔记本的第一个单元格读取图像并生成傅里叶变换(ft),我希望能够随时放大它

%matplotlib nbagg
from skimage import data, io
from skimage.draw import disk
import numpy as np
import matplotlib.pyplot as plt
img = data.checkerboard()
ft = np.abs(np.fft.fftshift(np.fft.fft2(np.fft.ifftshift(img))))
ft[ft.shape[0]//2,ft.shape[1]//2]=np.mean(ft)
plt.imshow(ft)

第二个单元将掩模放置在 ft 的峰值之一处并显示输出图像。该图像应显示在其自己的单元格上,并且不应覆盖前一个图像。然而,它不需要是互动的

%matplotlib inline
row, col = 96,104
rr, cc = disk((row, col), 7)
mask=np.zeros_like(img)
mask[rr, cc] = 1
plt.imshow(ft*mask)
python matplotlib jupyter-notebook
1个回答
0
投票

我使用小部件(需要 ipympl 包)后端来进行交互式绘图。

但我认为获得单独数字的关键是明确地为每个图创建一个新数字:

%matplotlib widget
from skimage import data, io
from skimage.draw import disk
import numpy as np
import matplotlib.pyplot as plt
img = data.checkerboard()
ft = np.abs(np.fft.fftshift(np.fft.fft2(np.fft.ifftshift(img))))
ft[ft.shape[0]//2,ft.shape[1]//2]=np.mean(ft)
plt.figure()
plt.imshow(ft)
plt.show()
© www.soinside.com 2019 - 2024. All rights reserved.