如何根据结果足球比赛的数据框创建热图图 python?
how to create heatmap plot python base on dataframe of result football matchs?
我想在 python 中绘制热图。我的代码只绘制 home_score 和 away_score 之间的关系,像这样
f = plt.figure(figsize=(8, 10))
plt.matshow(df_match[['home_score','away_score']].corr(),fignum=f.number)
plt.xticks(range(df_match.select_dtypes(['number']).shape[1]), df_match.select_dtypes(['number']).columns, fontsize=14, rotation=45)
plt.yticks(range(df_match.select_dtypes(['number']).shape[1]), df_match.select_dtypes(['number']).columns, fontsize=14)
cb = plt.colorbar()
cb.ax.tick_params(labelsize=14)
plt.title('Correlation Matrix', fontsize=16);
这是它的输出:
我如何制作一个热图,其中 x 是主队得分,y 是客队得分?
my df like this
home_score away_score
0 0 0
1 4 2
2 2 1
3 2 2
4 3 0
... ... ...
43080 0 1
43081 1 0
43082 1 2
43083 0 1
43084 0 2
我想要的是这样的:
谢谢!
正在将我的评论转化为答案。您现有的代码使用 plt.matshow
绘制相关性。只要您的数据格式正确,在 plt.matshow
或 seaborn.heatmap
中应该是可行的。问题是,你有可用的数据吗?
如果您想要一个热图,其中 x 轴是主队,y 轴是客队,您的数据框还需要为每一行存储主队和客队。鉴于指定了两支球队,您可以简单地存储两支球队之间的得分差异。下面的示例:
import pandas as pd
df = pd.DataFrame({
"score": [0, 4, -2, 2, -3, 0, -1, 1, 0, 0, -3, 2],
"home_team": ["A", "B", "C", "A", "B", "C", "A", "B", "D", "D", "C", "D"],
"away_team": ["B", "C", "A", "C", "A", "B", "D", "D", "C", "A", "D", "B"]
})
如果您可以按照上述格式存储数据,那么您可以使用df.pivot
重塑数据框:
df2 = df.pivot(index="home_team", columns="away_team")
然后您可以使用 matplotlib 或 seaborn 显示热图:
import matplotlib.pyplot as plt
plt.matshow(df2)
plt.colorbar()
plt.show()
import seaborn as sns
sns.heatmap(df2)
plt.show()
我想在 python 中绘制热图。我的代码只绘制 home_score 和 away_score 之间的关系,像这样
f = plt.figure(figsize=(8, 10))
plt.matshow(df_match[['home_score','away_score']].corr(),fignum=f.number)
plt.xticks(range(df_match.select_dtypes(['number']).shape[1]), df_match.select_dtypes(['number']).columns, fontsize=14, rotation=45)
plt.yticks(range(df_match.select_dtypes(['number']).shape[1]), df_match.select_dtypes(['number']).columns, fontsize=14)
cb = plt.colorbar()
cb.ax.tick_params(labelsize=14)
plt.title('Correlation Matrix', fontsize=16);
这是它的输出:
我如何制作一个热图,其中 x 是主队得分,y 是客队得分?
my df like this
home_score away_score
0 0 0
1 4 2
2 2 1
3 2 2
4 3 0
... ... ...
43080 0 1
43081 1 0
43082 1 2
43083 0 1
43084 0 2
我想要的是这样的:
谢谢!
正在将我的评论转化为答案。您现有的代码使用 plt.matshow
绘制相关性。只要您的数据格式正确,在 plt.matshow
或 seaborn.heatmap
中应该是可行的。问题是,你有可用的数据吗?
如果您想要一个热图,其中 x 轴是主队,y 轴是客队,您的数据框还需要为每一行存储主队和客队。鉴于指定了两支球队,您可以简单地存储两支球队之间的得分差异。下面的示例:
import pandas as pd
df = pd.DataFrame({
"score": [0, 4, -2, 2, -3, 0, -1, 1, 0, 0, -3, 2],
"home_team": ["A", "B", "C", "A", "B", "C", "A", "B", "D", "D", "C", "D"],
"away_team": ["B", "C", "A", "C", "A", "B", "D", "D", "C", "A", "D", "B"]
})
如果您可以按照上述格式存储数据,那么您可以使用df.pivot
重塑数据框:
df2 = df.pivot(index="home_team", columns="away_team")
然后您可以使用 matplotlib 或 seaborn 显示热图:
import matplotlib.pyplot as plt
plt.matshow(df2)
plt.colorbar()
plt.show()
import seaborn as sns
sns.heatmap(df2)
plt.show()