我正在绘制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这样的行,这段代码工作正常。提供以下输出:
但是,如果我将行数增加到800,则图形看起来像垃圾。以下是输出:
删除plt.yticks后的图片:
有没有人知道,我怎样才能增加这种热图中的行数?
答案 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])
希望这有帮助