我有一个交互式图形,在该图形上逐步绘制,一次一个块。
也就是说,在一个循环中我得到一些采样数据,然后我将它们添加到图中的现有曲线并重新绘制图片。为此,我使用了 get/set_x/ydata 函数。这条线上的东西:
# Get initial data
time = [1, 2, 3, 4, 5]
samples = [0.1, 0.2, 0.3, 0.4, 0.5]
c = plot_curve(time, samples)
# Get new data
time2 = [6, 7, 8]
samp2 = [0.6, 0.7, 0.8]
c.set_xdata(append(c.get_xdata(), time2))
c.set_ydata(append(c.get_ydata(), samp2))
问题是,我还在使用fill_between 填充曲线附近的一些区域(例如曲线和x 轴之间的空间)。目前,我正在以这种方式创建很多小块:
# Filling initial chunk
fill_between(time, samples, [0 for i in time])
# Filling next chunk
fill_between(time[-1] + time2, samples[-1] + samp2, [0 for i in time2] + [0])
(我知道这段代码很臭,但它是为了给出一个想法)。
所以,问题是:有一条曲线,但填充区域为 2(每个数据块一个)。这会在绘图中产生小的伪影,因为每个填充区域都非常靠近下一个区域,它们之间的空间非常小。
有没有办法在填充区域也做这种增量工作?
例如,保留 2 条曲线(一个等于 c.get_ydata() 和一个零)并让 matplotlib 自动填充它们之间的区域可能很好,而不必显式调用命令 - 这样填充的区域将始终与采样点保持同步。
或者,另一种好方法是使用采样点而不是多边形来表示填充区域,以便我可以使用类似于 get/set_x/ydata 的方法更新该区域。