如何使用 seaborn 以方形打印热图?

How to print the heatmap in a square shape using seaborn?

当我 运行 下面的代码时,我注意到热图没有正方形,我知道我已经使用了 square=True 但它没有用!知道如何以方形格式打印热图吗?谢谢!

代码:

from datetime import datetime
import numpy as np
import pandas as pd
import matplotlib as plt
import os
import seaborn as sns

temp_hourly_A5_A7_AX_ASHRAE=pd.read_csv('C:\Users\cvaa4\Desktop\projects\s\temp_hourly_A5_A7_AX_ASHRAE.csv',index_col=0, parse_dates=True, dayfirst=True, skiprows=2)
sns.heatmap(temp_hourly_A5_A7_AX_ASHRAE,cmap="YlGnBu", vmin=18, vmax=27, square=True, cbar=False, linewidth=0.0001);

结果:

您可以使用 matplotlib 并在绘制热图之前设置 figsize。

import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
rnd = np.random.default_rng(12345)
data = rnd.uniform(-100, 100, [100, 50])

plt.figure(figsize=(6, 5))
sns.heatmap(data, cmap='viridis');

请注意,我使用的是 figsize=(6, 5) 而不是正方形 figsize=(5, 5)。这是因为在给定的 figsize 上,seaborn 还放置了颜色条,这可能会导致热图被挤压一点。您可能还想根据需要更改这些无花果尺寸。

square=True 应该可以得到方形 单元格 ,下面是一个工作示例:

import pandas as pd
import numpy as np
import seaborn as sns

df = pd.DataFrame(np.tile([0,1], 15*15).reshape(-1,15))

sns.heatmap(df, square=True)

但是,如果您想要 的正方形,您可以使用 set_aspect 和数据的形状:

ax = sns.heatmap(df)
ax.set_aspect(df.shape[1]/df.shape[0]) # here 0.5 Y/X ratio