Matplotlib:重用Line2D会导致线路偏移

时间:2014-07-01 08:09:57

标签: python matplotlib reusability

当我尝试在另一个图形中重复使用Line2D艺术家时,我在Matplotlib中出现奇怪的行为:在第二个图中,艺术家是偏移的。

我做错了什么或者这是一个错误?如果是这样,有一种快速的方法来避免它?

我已将问题归结为以下代码:

import matplotlib.pyplot as pyplt
import numpy as np

xs=np.arange(10)
ys=np.arange(10)
line=pyplt.Line2D(xs,ys,color="red",linewidth=1)

print "IN THIS FIRST FIGURE, line LOOKS JUST FINE"
figure1 = pyplt.figure()
axes1 = figure1.add_subplot(111)
axes1.add_artist(line)
pyplt.show()
pyplt.close('all')

print "BUT WHEN I REUSE line IN ANOTHER FIGURE, IT IS OFFSET"
figure2 = pyplt.figure()
axes2 = figure2.add_subplot(111)
axes2.add_artist(line)
pyplt.show()
pyplt.close('all')

http://imgur.com/IzaLR5E.jpg的图片,但我没有发布它的声誉。

1 个答案:

答案 0 :(得分:0)

当您将一个艺术家添加到轴时,它会从轴中获取大量细节(例如用于从数据空间获取的变换堆栈 - > scree-space)。

因此你不能在多个图形/轴上重复使用艺术家(你原则上可以移动它们,但它会涉及触及内脏)。只是第二次绘制它。