为什么热图颜色值显示为细矩形条而不是正方形?

时间:2016-06-06 13:18:36

标签: python pandas matplotlib heatmap seaborn

如何改善此热图的外观?为什么颜色值显示为细长方形条带(中间有所有空白区域)而不是正方形,或者这通常取决于数据文件?这不是热图应该是什么样子。

Heatmap

Data

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(color_codes=True)
np.random.seed(sum(map(ord, "distributions")))

data = pd.read_csv('dvAng_heatmap.dat',sep='\s',engine='python')
data2 = pd.pivot_table(data.round(2),values='k',index='g',columns='h')

mask = np.isnan(data2)

sns.set(style="white")

xtics = 20
ytics = 10
cmap = "jet"
vmin = None
vmax = None

ax = sns.heatmap(data2, xticklabels=xtics, yticklabels=ytics, mask=mask, linewidths=0, cbar=True, robust=False,cmap=cmap, vmin=vmin, vmax=vmax)

ax.invert_yaxis()

plt.title('Heatmap')
plt.xlabel('angle')
plt.ylabel('separation')

plt.savefig('Heatmap.png', transparent=True)

sns.plt.show()

1 个答案:

答案 0 :(得分:3)

阅读documentation。您所要做的就是添加square=True关键字。默认情况下,此选项设置为False。

在引擎盖下,seaborn正在调用matplotlib.pyplot.imshow并使用square关键字设置Axes.set_aspect('equal')。如果使用square=True的效果太极端,您可以尝试手动设置方面:ax.set_aspect(num)其中num是一个数字,用于描述结果矩形的高度:宽度比。