IPython Notebook --pylab inline:如何放大绘图

101
如果启用了 inline,是否可能对绘图进行缩放?特别是对于 3D 绘图,旋转和缩放是必要的功能。
6个回答

111

现在你可以使用%matplotlib notebook代替%matplotlib inline,这样你就能够与你的图表进行交互了。


1
这是一个很好的解决方案。如果你尝试了它却不起作用,检查一下你的matplotlib版本。我认为这是在1.5版本中引入的。 - jpobst
与子图一起使用效果不如我所希望的那样好;可以为单个子图进行缩放和平移,但无法增加/减小整个绘图图像的大小。公平地说,这并不是上面提出的最初问题。 - ijoseph
1
@ijoseph,你也可以增加整个图像的大小。只需拖动图形的右下角即可。 - João Abrantes
4
如果你已经调用了 %matplotlib inline,你可能需要重新启动你的笔记本。 - Guido
15
我收到了这个错误信息:"Javascript Error: IPython is not defined"。 - Ben
显示剩余3条评论

103

现在由于mpld3,在行内图中启用缩放变得非常容易!

你只需要安装 mpld3 (pip install mpld3),然后在你的笔记本中添加以下内容:

%matplotlib inline
import mpld3
mpld3.enable_notebook()

现在,您的图表将在左下角获得一个工具栏菜单,在其中可以启用鼠标缩放 :)


似乎目前还不支持3D绘图:https://github.com/jakevdp/mpld3/issues/223 - Théo T
3
这很棒,但需要补充说明的是,在一些较重的图形中(例如包含数百万个点的图形),速度非常慢。 - user2321808
2
我在Jupyter Notebook 4.2.2中实现了这个功能,但是放大图像会导致图像变空白。将origin='lower'作为imshow()调用的参数添加进去可以解决这个问题。(例如:imshow(res, origin='lower', cmap = cm.gray)) - DanGoodrick
7
对我来说不起作用。我收到了“Json序列化错误”。 - Gulzar
1
它相当地拖慢了我的内核...非常明显。 - Sachin

14

mpld3 减缓了我的笔记本执行速度。我发现使用nbagg后端更好,它提供了相同的交互工具,而且还可以通过右键菜单保存图形:

import matplotlib
matplotlib.use('nbagg')
import matplotlib.pyplot as plt

3
我认为这是最好的答案,外观比mpld3更好,并且拥有更多的功能。 - bznein
这对我很有帮助。我同意@bznein的观点,因为它更清晰,可以默认工作并且有效。 - Joop
使用此选项,图形甚至对我都不显示。 - Rubi Shnol

10

目前,最接近的方法是使用figsize函数以更大的尺寸重新绘制它。该函数需要使用英寸作为尺寸单位,这让我第一次尝试使用时感到困惑。

有一些计划可以提供一个丰富的后端,允许使用HTML5实时操纵绘图,但我认为还需要几个月才能准备好。

如果您正在本地计算机上使用笔记本电脑,目前最简单的选项可能是不使用内联模式,因此绘图将弹出为单独的窗口。


1
是的,使用最近版本的matplotlib,您现在可以选择nbagg后端。 - Thomas K

7

0

matplotlib.use('nbagg') 对我也没用。我发现mdplt3相当慢。最终我没有使用缩放,而是通过调整图形大小(使其变大),使用了这篇文章:在IPython笔记本中设置图形宽度


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接