pcolormesh上的标签

时间:2016-02-15 13:45:37

标签: python matplotlib

我有以下数据框,我将其绘制为矩阵:

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 个答案:

答案 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()

enter image description here