<p>当设置<code>FacetGrid</code>的<code>aspect</code>参数时,不仅要考虑轴限制,而且还要考虑轴标签和标题的大小和位置,以计算正确的轴几何图形。因此热图是矩形的。</p>
<p>若要调整二次热图和轴,可以使用函数<code>set_bbox</code>手动设置校正的轴边界框位置。</p>
<p>另一种方法有点棘手。带有第二个参数的函数<code>ax.set_aspect</code>将尝试调整热图和轴。
但是,若要完全删除保留的灰色边框,可以通过根据以下图形面颜色设置轴背景颜色来隐藏它:</p>
<pre><code>import seaborn as sns
import numpy as np
import pandas as pd
import matplotlib.pylab as plt
# Generate a set of sample data
np.random.seed(0)
indices = pd.MultiIndex.from_product((range(5), range(5), range(5)),
names=('label0', 'label1', 'label2'))
data = pd.DataFrame(np.random.uniform(0, 100, size=len(indices)),
index=indices, columns=('value',)).reset_index()
def draw_heatmap(*args, **kwargs):
data = kwargs.pop('data')
d = data.pivot(index=args[1], columns=args[0], values=args[2])
sns.heatmap(d, **kwargs)
fg = sns.FacetGrid(data, col='label0')
fg.map_dataframe(draw_heatmap, 'label1', 'label2', 'value', cbar=False, square = True)
# get figure background color
facecolor=plt.gcf().get_facecolor()
for ax in fg.axes.flat:
# set aspect of all axis
ax.set_aspect('equal','box-forced')
# set background color of axis instance
ax.set_axis_bgcolor(facecolor)
plt.show()
</code></pre>
<p>结果:</p>
<p><a href="https://i.stack.imgur.com/HlOoO.png" rel="noreferrer"><img src="https://i.stack.imgur.com/HlOoO.png" alt="enter image description here"/></a></p>