2016-02-15 55 views
1

我有以下的數據幀,我繪製一個矩陣:標籤上pcolormesh

symbol  abc def xyz 
symbol 
abc   1  0.2 0.5 
def   0.2  1 0.3 
xyz   0.5 0.3  1 

我繪製它如下:

plt.pcolormesh(df.values) 

有沒有一種方法來繪製內部的各個單元格的值細胞?換句話說,我不想要一個傳說,我希望每個對的值都繪製在矩陣的相關單元格內。

回答

1

我認爲您需要爲pcolormesh上的每個單元格創建一個plt.text對象。這個循環應該做你想做的。可能有矢量化的方式來做到這一點,但至少這是有效的。

for ii,i in enumerate(df.index): 
    for jj,j in enumerate(df.keys()): 
     plt.text(ii+0.5,jj+0.5,df[i][j]) 

這是一個完整的腳本:

import pandas as pd 
import matplotlib.pyplot as plt 

plt.viridis() 

df = pd.DataFrame({ 
    'abc':{'abc':1.0,'def':0.2,'xyz':0.5}, 
    'def':{'abc':0.2,'def':1.0,'xyz':0.3}, 
    'xyz':{'abc':0.5,'def':0.3,'xyz':1.0}}) 

plt.pcolormesh(df.values) 

for ii,i in enumerate(df.index): 
    for jj,j in enumerate(df.keys()): 
     plt.text(ii+0.5,jj+0.5,df[i][j], 
       ha='center',va='center', 
       size=20,color='w') 

plt.show() 

enter image description here

+0

十分感謝... – darkpool