如何改善此热图的外观?为什么颜色值显示为细长方形条带(中间有所有空白区域)而不是正方形,或者这通常取决于数据文件?这不是热图应该是什么样子。
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()
答案 0 :(得分:3)
阅读documentation。您所要做的就是添加square=True
关键字。默认情况下,此选项设置为False。
在引擎盖下,seaborn正在调用matplotlib.pyplot.imshow
并使用square关键字设置Axes.set_aspect('equal')
。如果使用square=True
的效果太极端,您可以尝试手动设置方面:ax.set_aspect(num)
其中num
是一个数字,用于描述结果矩形的高度:宽度比。