Matplotlib 热图动画非常小[重复]

Posted

技术标签:

【中文标题】Matplotlib 热图动画非常小[重复]【英文标题】:Matplotlib heatmap animation incredibly small [duplicate] 【发布时间】:2019-06-15 09:05:48 【问题描述】:

我正在尝试在 matplotlib 中为热图制作动画,这在几个小时内第一次起作用,但是图表非常非常小,如下所示。

我使用的代码如下:

import numpy as np
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import xarray

Writer = animation.writers['ffmpeg']
writer = Writer(fps=15, metadata=dict(artist='Me'), bitrate=1800)

x = a[var]['lat'].values # Formatted as follows: [-32,-33,-34,-35,-36...]
y = a[var]['lon'].values # Formatted as follows: [150.2, 151.2, 153.2...]
z = np.array(a[var].values) # [[[24,22,18,23,24,24,25]
                            #   [18,25,23,22,21,19,26]
                            #   ...
                            #   [12,28,19,22,25,26,19]]
                            #  ...
                            #  [[8,4,16,12,22,24,23,8]
                            #   ...
                            #   [12,28,14,7,8,13,6,12]]]
fig = plt.figure()
ax = fig.add_subplot(len(x),len(y),1)
def plot(i):
    data = z[i]
    heatmap = ax.pcolor(x, y, data)
ani = animation.FuncAnimation(fig, plot, interval=1, frames=20)
ani.save('im.mp4', writer=writer)

我还应该提到尝试调用 plt.subplots(x,y) 会导致控制台冻结,5 分钟后它仍然没有进行。

如果有人有任何想法或建议,他们将不胜感激。

【问题讨论】:

显然您正在创建一个包含len(x)*len(y) 条目的子图网格,并且只填充其中的第一个。这样做的目的是什么?你想让几个子图一个接一个地出现在屏幕上吗?我建议您将线路更改为 ax = fig.add_subplot(111) 并报告缺少的内容。 是的,那是我做错了。谢谢,现在可以使用了 【参考方案1】:

ax = fig.add_subplot(len(x),len(y),1) 应该是ax = fig.add_subplot(111)。代码在此更改后有效。

【讨论】:

以上是关于Matplotlib 热图动画非常小[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何为 seaborn 的热图或相关矩阵设置动画?

在 Jupyter Notebook 中使用 Matplotlib 对 3D 矩阵进行动画处理

使用 matplotlib 保存散点图动画

使用 Matplotlib 绘制 2D 热图

Matplotlib 相关热图中缺少标签

如何修复 matplotlib 和 seaborn 热图?