增加Python 2D热图中的行数

时间:2014-08-10 12:44:21

标签: python heatmap

我正在绘制python热图。以下是我正在使用的代码。

df = pd.read_csv('Book1.csv', index_col=0)
print (df)
# plotting
fig,ax = plt.subplots()
ax.matshow(df.mask(df.isin(df.att1)!=1), cmap=cm.Reds) 
ax.matshow(df.mask(df.isin(df.att2)!=1), cmap=cm.Greens)
ax.matshow(df.mask(df.isin(df.att3)!=1), cmap=cm.Blues)
#ax.matshow(df.mask(df.isin(df.att4)!=1), cmap=cm.Reds) 
#ax.matshow(df.mask(df.isin(df.att5)!=1), cmap=cm.Greens)
#ax.matshow(df.mask(df.isin(df.att6)!=1), cmap=cm.Blues)
plt.xticks(range(3), df.columns)
plt.yticks(range(864), df.index)
plt.show()  

df由以下形式的数据组成:

    att1  att2 att3

fun1  1     2     1     
fun2  1     0     0     

  .......

  ....

如果我使用像10-12这样的行,这段代码工作正常。提供以下输出:enter image description here

但是,如果我将行数增加到800,则图形看起来像垃圾。以下是输出:enter image description here

删除plt.yticks后的图片:enter image description here

有没有人知道,我怎样才能增加这种热图中的行数?

1 个答案:

答案 0 :(得分:1)

您可以使用aspect选项,但是对于y-ticks,我不确定将它们全部用起来是否有用,因为它不可读,但您可以设置一些:< / p>

fig, ax = plt.subplots(figsize=(6, 10))

ax.matshow(df.mask(df.isin(df.att1)!=True), cmap=cm.Reds,  aspect='auto')
ax.matshow(df.mask(df.isin(df.att2)!=True), cmap=cm.Greens, aspect='auto')
ax.matshow(df.mask(df.isin(df.att3)!=True), cmap=cm.Blues, aspect='auto')

plt.xticks(range(3), df.columns)
plt.yticks(range(0, 800, 100), df.index[::100])

enter image description here

希望这有帮助