我有以下数据框,我将其绘制为矩阵:
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)
有没有办法在细胞内绘制每个细胞的值?换句话说,我不希望侧面有一个图例,我希望每个对的值都在矩阵的相关单元格内绘制。
答案 0 :(得分:1)
我认为您需要为plt.text
上的每个单元格创建一个pcolormesh
对象。这个循环应该做你想要的。可能有一种矢量化的方法来做到这一点,但至少这是有效的。
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()