我想要添加到两个不同的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)
答案 0 :(得分:2)
这是因为将相同的patch
(或更常见的是Artist
}添加到多个Axes
is not supported:Artist
可以只保留必要的转换以便在一个Axes
中使用。
当用户尝试将已与Artist
对象关联的Axes
添加到另一个Axes
对象时,matplotlib的未来版本将为raise an exception。