python - 制作 2D 动画时,python2 与 python3 中的 set_array 问题
问题描述
我一直以同样的方式制作地理数据的 2D 动画。
首先,我使用数据的第一个“帧”(此处为 data0)进行绘图:
img = ax.pcolormesh(data0.lon.values, data0.lat.values, data0.x.values, cmap='viridis')
然后我调用 FuncAnimation 并将数据传入:
anim = FuncAnimation(fig, animate, np.arange(monthly_data.time.size), fargs=(fig, img, monthly_data))
然后使用 set_array 用下一帧更新 img 对象
img.set_array(ma.masked_invalid(this_data[:-1,:-1].ravel()))
这在 python2 中一直运行良好,但我遇到了 python3 的问题。结果以“倾斜”地图结束,我认为我已将其缩小到 set_array 与 py3 中的 QuadMesh 对象的行为不同,但我找不到任何有关 set_array 可能如何变化的信息。
有没有人有什么建议?
解决方案
我遇到了同样的问题-这就是发生的事情
您不应使用与数据矩阵大小匹配的 X、Y 数组定义初始四边形网格。这样做会将您的四边形网格的大小裁剪为比数据集短的一行/列。
从文档:
X 和 Y 的维度应该比 C 的维度大一。或者,X、Y 和 C 可能具有相同的维度,在这种情况下,C 的最后一行和最后一列将被忽略。
当您使用:
qm.set_array(new_array)
您将扁平数组扔进构造函数中,该构造函数将按顺序放置值,但期望不同大小的数组。您得到的不是错误,而是四边形网格,其中每列的最后一个连续元素被放置在下一行中,从而创建了扭曲的网格。
使用适当间隔的额外行和列定义原始文件,或者在使用 set_array() 时手动调整它们以匹配较小的四边形网格。
推荐阅读
- solr - Solr 服务正在运行,但连接被 Ubuntu 20.04 上的 Solr 8.7.0 拒绝
- sql - 雪花更新语法
- unreal-engine4 - 找不到“生成 Visual Studio 项目文件”的选项
- python - 什么是启用按 Enter 键退出循环的正则表达式(Python)?
- mysql - 如何根据MYSQL中的条件求和
- flutter - Flutter video_player 多个视频
- apache-spark - 如何在独立模式下为 spark worker 配置 python 路径?
- google-sheets - 谷歌表格我如何使用获取单元格值,在另一个选项卡中搜索它,当找到匹配项时,抓取所有行?
- r - 无法从意外符号从 GitHub 下载包
- javascript - 通过javascript删除空格并在单词之间添加破折号