python – 更新pyplot.scatter的位置和颜色
发布时间:2020-12-20 13:42:46 所属栏目:Python 来源:网络整理
导读:我一直在努力解决这个问题,无法让它发挥作用.我正在以块的形式读取文件并从中散布绘图数据,我想通过更新for循环中每个块的散点图来“动画化”它(并且还将其调整为实时数据流). 所以这个丑陋的例子就适用于单个情节: x = [1,2,3,4]y = [4,1]alpha = [0.2,0.3
我一直在努力解决这个问题,无法让它发挥作用.我正在以块的形式读取文件并从中散布绘图数据,我想通过更新for循环中每个块的散点图来“动画化”它(并且还将其调整为实时数据流).
所以这个丑陋的例子就适用于单个情节: x = [1,2,3,4] y = [4,1] alpha = [0.2,0.3,0.8,1.0] c = np.asarray([(0,1,a) for a in alpha]) s = scatter(x,y,marker='o',color=c,edgecolors=c) 但是如何在不重复调用s.remove()和scatter()的情况下更新绘图?完全不直观命名的s.set_array和s.set_offsets应该更新颜色以及x和y位置,但我无法弄清楚如何将它们与我上面的x,alpha数据类型一起使用. (另外,有没有更好的方法在上面的情节中做alpha?) 解决方法
我找到的解决方案包括使用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)) 这完全符合我的预期. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |