[英]Create custom heatmap from pandas dataframe
我有一個 8 行 6028 列的數據框。 我想為第一列創建一個 8 行的熱圖(最終我將創建一個動畫,以便地圖更新讀取每列)
這是數據框的片段:
value
percentage_time 0.00 0.15 0.16
region
Anterior Distal 0.111212 0.119385 0.116270
Anterior Proximal 0.150269 0.153613 0.168188
Lateral Distal 0.130440 0.137157 0.136494
Lateral Proximal 0.171977 0.182251 0.181090
Medial Distal 0.077468 0.082064 0.082553
Medial Proximal 0.194924 0.198803 0.199339
Posterior Distal 0.164124 0.171221 0.166328
Posterior Proximal 0.131310 0.145706 0.136094
我使用了以下代碼,但它為我提供了一個帶有堆疊索引和數據框中所有數據的圖:
sns.heatmap(region_pressure_data)
當我嘗試使用以下代碼來獲取第一列時,我得到以下信息:
sns.heatmap(region_pressure_data.ix[:,0:1])
理想情況下,我想要一張 8 個區域的地圖,2 行(近端和遠端)和 4 列(前、側、后、內側),顯示一列的數據。
如果有任何關於使用這種方法取得進展的建議,或者是否有更好的方法來應對挑戰,我將不勝感激。
提前致謝。
索引中的數據需要成為單元格的一部分,您可能需要一個數據透視表。 為了說明,我創建了一些類似的數據框,列較少,以說明我在做什么。 我希望這是您正在使用的結構?
df = pd.DataFrame(index=["Anterior Distal", "Anterior Proximal", "Lateral Distal", "Lateral Proximal"], data={0.:[1,2,3,4], 1.:[5,6,7,8]})
print(df)
>>>
0.0 1.0
region
Anterior Distal 1 5
Anterior Proximal 2 6
Lateral Distal 3 7
Lateral Proximal 4 8
據我了解,您想明確引用索引的兩個部分,因此您需要先拆分索引。 例如,您可以通過這種方式執行此操作,首先使用 Pandas 方法拆分字符串,然后將其轉換為可以切片的 numpy 數組
index_parts = np.array(df.index.str.split().values.tolist())
index_parts[:,0]
>>> array(['Anterior', 'Anterior', 'Lateral', 'Lateral'], dtype='<U8')
現在,您可以將它們添加為新列
df["antlat"] = index_parts[:,0]
df["distprox"] = index_parts[:,1]
print(df)
>>>
0.0 1.0 antlat distprox
region
Anterior Distal 1 5 Anterior Distal
Anterior Proximal 2 6 Anterior Proximal
Lateral Distal 3 7 Lateral Distal
Lateral Proximal 4 8 Lateral Proximal
然后您可以為您感興趣的值創建樞軸
df_pivot = df.pivot(index="antlat", columns="distprox", values=0.0)
print(df_pivot)
>>>
distprox Distal Proximal
antlat
Anterior 1 2
Lateral 3 4
並繪制它(請注意,這只是 2x2,因為我沒有在示例中添加內側和后側)
sns.heatmap(df_pivot)
為什么不直接使用matplotlib
? :D
import matplotlib.pyplot as plt
plt.imshow(df.reset_index(drop=True).values[:,1:].astype("float"))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.