移动补丁而不是删除它

时间:2016-09-27 08:22:35

标签: python matplotlib

我有一张逐渐显露的图表。由于这应该发生在一个巨大的数据集和同时在几个子图上,我计划移动 patch而不是删除它并从头开始绘制以加速代码。

我的问题类似于this question。但是,我无法解决它。

这是 minimal 工作示例:

import numpy as np
import matplotlib.pyplot as plt

nmax = 10
xdata = range(nmax)
ydata = np.random.random(nmax)

fig, ax = plt.subplots()
ax.plot(xdata, ydata, 'o-')
ax.xaxis.set_ticks(xdata)
plt.ion()

i = 0
while i <= nmax:
    # ------------ Here I would like to move it rather than remove and redraw.
    if i > 0:
        rect.remove()
    rect = plt.Rectangle((i, 0), nmax - i, 1, zorder = 10)
    ax.add_patch(rect)
    # ------------
    plt.pause(0.1)
    i += 1

plt.pause(3)

1 个答案:

答案 0 :(得分:2)

也许这适合你。您只需更新其位置和宽度(使用rect.set_x(left_x)rect.set_width(width)),然后重新绘制画布,而不是删除修补程序。尝试用此替换你的循环(注意在循环之前{em>创建一次 <)>:

Rectangle