【问题标题】:Matplotlib: reusing Line2D leads to line being offset [duplicate]Matplotlib:重用 Line2D 导致线偏移 [重复]
【发布时间】:2014-07-01 08:09:57
【问题描述】:

当我尝试在另一个图中重用 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,但我缺乏发布它的声誉。

【问题讨论】:

  • 好的,谢谢。我正在运行 Matplotlib 1.3 版。我在版本说明中看到 1.3.1 包含一个修复:“从一个子图到另一个子图现在可以画线”,所以也许这可以解决这个问题。我会更新并检查。

标签: python matplotlib reusability


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-31
    • 1970-01-01
    • 1970-01-01
    • 2020-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多