我想在 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
我想要的只是這樣:

謝謝!
uj5u.com熱心網友回復:
將我的評論轉換為答案。您現有的代碼使用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()

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/408938.html
標籤:
