python从DataFrame制作热图

我有一个从Python的pandas包生成的数据框。 如何使用pandas包中的DataFrame生成热图。

import numpy as np from pandas import * Index= ['aaa','bbb','ccc','ddd','eee'] Cols = ['A', 'B', 'C','D'] df = DataFrame(abs(np.random.randn(5, 4)), index= Index, columns=Cols) >>> df ABCD aaa 2.431645 1.248688 0.267648 0.613826 bbb 0.809296 1.671020 1.564420 0.347662 ccc 1.501939 1.126518 0.702019 1.596048 ddd 0.137160 0.147368 1.504663 0.202822 eee 0.134540 3.708104 0.309097 1.641090 >>> 

你想要matplotlib.pcolor

 import numpy as np from pandas import DataFrame import matplotlib.pyplot as plt Index= ['aaa', 'bbb', 'ccc', 'ddd', 'eee'] Cols = ['A', 'B', 'C', 'D'] df = DataFrame(abs(np.random.randn(5, 4)), index=Index, columns=Cols) plt.pcolor(df) plt.yticks(np.arange(0.5, len(df.index), 1), df.index) plt.xticks(np.arange(0.5, len(df.columns), 1), df.columns) plt.show() 

对于今天看这个的人来说,我会推荐使用Seaborn的heatmap()

上面的例子将按如下方式完成:

 import numpy as np from pandas import DataFrame import seaborn as sns %matplotlib inline Index= ['aaa', 'bbb', 'ccc', 'ddd', 'eee'] Cols = ['A', 'B', 'C', 'D'] df = DataFrame(abs(np.random.randn(5, 4)), index=Index, columns=Cols) sns.heatmap(df, annot=True) 

其中%matplotlib是那些不熟悉的IPython魔术function。

有用的sns.heatmap API是在这里 。 检查出这些参数,其中有很多。 例:

 import seaborn as sns %matplotlib inline idx= ['aaa','bbb','ccc','ddd','eee'] cols = list('ABCD') df = DataFrame(abs(np.random.randn(5,4)), index=idx, columns=cols) # _r reverses the normal order of the color map 'RdYlGn' sns.heatmap(df, cmap='RdYlGn_r', linewidths=0.5, annot=True) 

在这里输入图像说明