加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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))

这完全符合我的预期.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读