【发布时间】:2014-11-03 12:43:11
【问题描述】:
在 ipython notebook 中使用 matplotlib 内联后端时,默认行为是使用 bbox_inches='tight' 通过 savefig() 在内部生成嵌入的 png 图像。这消除了轴周围的空白,在大多数情况下都很好。
但是,有时可能想要(暂时)禁用此功能,例如,当他想要手动保持两个图形垂直对齐时(假设我们不想在这里使用子图):
%matplotlib inline
from pylab import *
plot(rand(100))
subplots_adjust(left=0.2) # Has no effect with inline, but works as expected with qt
figure()
plot(rand(100)*10000) # Will result in a larger left margin for this figure...
subplots_adjust(left=0.2)
那么如何禁用这种行为呢?谢谢~
编辑
为了使这里涉及的问题更加明确(感谢 Anzel),由于 yticklabels 中要显示的数字更多,第二个数字在 bbox_inches 触发的自动布局调整后将具有更大的左边距(和更小的右边距) savefig() 中的 ='tight' 选项,由 notebook 内部调用以生成嵌入的 png 输出。它会有效地截断我用 subplots_adjust() 故意创建的任何额外空间,因此第二个图形似乎向右移动,而不是与第一个图形垂直“对齐”。
很容易理解我的意思——试试上面的代码 sn-p :)
我在这里不使用 subplot/subplots 的原因(请参阅 cmets 对 Anzel 的回答)是在这种特殊情况下,这两个数字实际上是由数十个小的 subplots 组成的,加上一些额外的格式/标签。将它们合并到一个更大的子图数组中并非易事......
【问题讨论】:
-
你为什么不使用
matplotlib.pyplot? -
只是为了方便。我认为 matplotlib.pyplot.plot 和 pylab.plot 是等价的。
-
pyplot是matplotlib内置的,不一定要导入pylab,就是我的意思
-
更多问题,我不认为我完全得到你想要实现的目标,你想在笔记本中动态设置轴标签更窄和更宽?
-
本质上,我想改变坐标轴的左边距(从默认的 0.1 到 0.2),以便在笔记本中视觉上对齐两个图形的坐标轴框架/bbox。
标签: python matplotlib ipython ipython-notebook