我想从一组DataFrames (例如,保存在字典中)绘制一个动画热图,可以是gif格式,也可以是电影格式。
例如,假设我有以下DFs集合。我可以一个接一个地展示它们。但我希望它们都以GIF显示的相同方式显示在同一张图中(热图的循环)。
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
dataframe_collection = {}
for i in range(5):
dataframe_collection[i] = pd.DataFrame(np.random.random((5,5)))
# Here within the same loop just for brevity
sns.heatmap(dataframe_collection[i])
plt.show()发布于 2020-01-06 00:59:32
最简单的方法是首先创建单独的png图像,然后使用ImageMagick等软件将其转换为动画gif。
创建png的示例:
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
dataframe_collection = {}
for i in range(5):
dataframe_collection[i] = pd.DataFrame(np.random.random((5,5)))
#plt.pcolor(dataframe_collection[i])
sns.heatmap(dataframe_collection[i])
plt.gca().set_ylim(0, len(dataframe_collection[i])) #avoiding problem with axes
plt.axis('off')
plt.tight_layout()
plt.savefig(f'dataframe_{i}.png')在安装ImageMagick之后,下面的外壳命令创建一个gif。如果默认设置不能令人满意,可以使用docs来探索许多选项。
convert.exe -delay 20 -loop 0 dataframe_*.png dataframes.gif
另请参阅this post关于在matplotlib中创建动画和动画gif。
请注意,Seaborn的热图还具有一些功能,如sns.heatmap(dataframe_collection[i], annot=True)。
如果您不能使用ImageMagick,您可以通过快速显示单个png文件来显示视频,模拟视频。This和this post包含更多解释和示例代码。特别是this answer的第二部分看起来很有前途。
https://stackoverflow.com/questions/59600776
复制相似问题