在iPython笔记本中将matplotlib补丁添加到内联轴两次会导致偏移

时间:2015-06-04 08:53:24

标签: python matplotlib ipython-notebook

我想要添加到两个不同的patch对象的matplotlib axis。第一次调用ax1.add_patch(my_patch)会得到正确的结果,但是当我调用ax2.add_patch(my_patch)时,补丁会水平偏移。之后再次调用add_patch不会改变偏移量。

使用%matplotlib inline时似乎只会发生这种情况。在单独的窗口中生成数字不会导致偏移。

使用%matplotlib inline时,我可以做些什么来避免偏移?

最小例子:

import numpy as np
from matplotlib.patches import Circle
import matplotlib.pyplot as plt

%matplotlib inline

grid = np.ones([10,10])
circle = Circle((5,5), 2)

fig1, ax1 = plt.subplots()
ax1.imshow(grid, interpolation='None')
ax1.add_patch(circle)

fig2, ax2 = plt.subplots()
ax2.imshow(grid, interpolation='None')
ax2.add_patch(circle)

1 个答案:

答案 0 :(得分:2)

这是因为将相同的patch(或更常见的是Artist}添加到多个Axes is not supportedArtist可以只保留必要的转换以便在一个Axes中使用。

当用户尝试将已与Artist对象关联的Axes添加到另一个Axes对象时,matplotlib的未来版本将为raise an exception