我正在制作两个seaborn
热图,将它们放入两个matplotlib
子图中,如下所示:
fig, axes = plt.subplots(2, 1, sharex=True, figsize=(5,10))
data = [
[0,0,0],
[0,0,0],
[0,0,0],
[0,0,0],
[0,0,0],
[0,0,0],
[0,0,0],
]
sns.heatmap(
data,
ax=axes[0],
linewidths=0.2,
cbar=False)
data = [
[0,0,0],
[0,0,0],
[0,0,0],
]
sns.heatmap(
data,
ax=axes[1],
linewidths=0.2,
cbar=False)
axes[0].set_title("A")
axes[1].set_title('B')
如您所见,这将导致子图A和B。子图A中的单个像元都具有相同的大小。子图B中的像元大小也都相同。但是,A和B之间的像元大小不同。如何确保子图之间的单元格大小相同?
我理解这意味着情节A总体上会比情节B大,这不是问题。
答案 0 :(得分:0)
可能的解决方案是更改两个子图的大小比例。
如果将图A和图B之间的大小比例设置为与图A和图B之间的行数之间的比例相同,则大小应(或多或少)相同。
data_a = [
[0,0,0],
[0,0,0],
[0,0,0],
[0,0,0],
[0,0,0],
[0,0,0],
[0,0,0],
]
data_b = [
[0,0,0],
[0,0,0],
[0,0,0],
]
fig, axes = plt.subplots(2, 1,
sharex=True,
figsize=(5,10),
gridspec_kw={'height_ratios': [len(data_a), len(data_b)]})
sns.heatmap(
data_a,
ax=axes[0],
linewidths=0.2,
cbar=False)
sns.heatmap(
data_b,
ax=axes[1],
linewidths=0.2,
cbar=False)
axes[0].set_title("A")
axes[1].set_title('B')
我想知道是否还可以通过选择来改变这种行为?