频率热图 matplotlib/seaborn

Frequency heatmap matplotlib/seaborn

有谁知道下图是如何构造的?可能使用 seaborn 热图或 matplotlib 工具?

我在 pandas datframe 中有相关数据;过去 5 年各个足球联赛每场比赛的主场进球和客场进球,我只是不确定这样的数字是如何构建的?

我的数据是下面的形式;

FTHG  FTAG

 2      0
 3      1
 2      2
 1      2

FTHG = 全职家庭目标 FTAG = 全场客场进球数

使用 2 列创建交叉表(计数矩阵)。将它除以匹配总数以获得百分比。然后放入heatmap.

您可以自行尝试各种样式等。

import pandas as pd
import seaborn as sns

df = pd.DataFrame([[1,0],[2,1],[3,2],[4,2],[5,0],[6,1],[7,1],[2,5],[5,3],
                   [4,0],[1,1],[2,2],[4,3],[1,4],[2,5],[4,6],[1,7],[2,0],
                   [2,2],[0,0],[2,1],[1,2],[1,0],[2,0],[1,1],[1,1],[1,0],
                   [2,5],[0,0],[1,1],[1,3],[1,3],[2,2],[1,1],[0,1],[1,0]], 
                    columns=['FTHG','FTAG'])


df2 = pd.crosstab(df['FTHG'], df['FTAG']).div(len(df))
sns.heatmap(df2, annot=True)

输出: