我有一张逐渐显露的图表。由于这应该发生在一个巨大的数据集和同时在几个子图上,我计划移动 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)
答案 0 :(得分:2)
也许这适合你。您只需更新其位置和宽度(使用rect.set_x(left_x)
和rect.set_width(width)
),然后重新绘制画布,而不是删除修补程序。尝试用此替换你的循环(注意在循环之前{em>创建一次 <)>:
Rectangle