我有一個看起來像這樣的熊貓資料框
| X | 是 | Z |
|---|---|---|
| -1 | -1 | 123 |
| -1 | 0 | 456 |
| -1 | 1 | 678 |
| 0 | -1 | 124 |
| 0 | 0 | 890 |
| 0 | 1 | 121 |
| 1 | -1 | 767 |
| 1 | 0 | 987 |
| 1 | 1 | 450 |
- 實際大小為 (121,3)
我想繪制一個 2D 顏色圖,其中 X 和 Y 在 x、y 軸上,Y 將值的強度顯示為繪圖右側的顏色條。
請注意,此處 Z 列的值不是 X 和 Y 的函式。
我試圖將此資料框轉換為 numpy 陣列。當我沒有 Z 對 X 和 Y 的依賴時,我無法創建大小為 (121,121) 的 Z 網格。我嘗試使用 imshow 和 pcolor 并查看了其他類似的答案,但我可以什么都找不到。
uj5u.com熱心網友回復:
最直接的方法是 Seaborn 的熱圖:
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
from io import StringIO
data_str = '''-1 -1 123
-1 0 456
-1 1 678
0 -1 124
0 0 890
0 1 121
1 -1 767
1 0 987
1 1 450'''
df = pd.read_csv(StringIO(data_str), names=['x', 'y', 'z'], delim_whitespace=True)
df_pivoted = df.pivot(columns='x', index='y', values='z')
ax = sns.heatmap(data=df_pivoted, annot=True, fmt='d', cmap='RdYlGn', cbar=True, cbar_kws={'label': 'z'}, square=True)
ax.tick_params(labelrotation=0)
plt.show()

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/414388.html
標籤:
上一篇:根據簇標簽拆分陣列
