更新pyplot.scatter的位置和颜色

时间:2014-05-31 03:32:21

标签: python matplotlib plot scatter-plot scatter

我一直在努力解决这个问题并且无法让它发挥作用。我正在读取块中的文件并从中分散绘制数据,我想通过更新for循环中每个块的散点图来“动画化”它(并且还将其调整为实时数据流) )。

所以像这个丑陋的例子一样适用于单个情节:

x = [1, 2, 3, 4]
y = [4, 3, 2, 1]
alpha = [0.2, 0.3, 0.8, 1.0]
c = np.asarray([(0, 0, 1, a) for a in alpha])
s = scatter(x, y, marker='o', color=c, edgecolors=c)

plot of above

但是,如何在不重复调用s.remove()scatter()的情况下更新图表?完全没有直观命名的s.set_arrays.set_offsets应该更新颜色以及x和y位置,但我无法弄清楚如何将它们与x,y,alpha数据类型一起使用我在上面。

(另外,有没有更好的方法在上面的情节中做alpha?)

1 个答案:

答案 0 :(得分:1)

我找到的解决方案包括使用Normalize根据相关数据制作标准化颜色列表,将其映射到ScalarMappable,并使用它来设置动画每帧的面部颜色和c限制。使用scat,散点图的句柄和speedsList提供颜色数据:

n = mpl.colors.Normalize(vmin = min(speedsList), vmax = max(speedsList))
m = mpl.cm.ScalarMappable(norm=n, cmap=mpl.cm.afmhot)
scat.set_facecolor(m.to_rgba(speedsList))
scat.set_clim(vmin=min(speedsList), vmax=max(speedsList))

这正是我所期望的。