我有两个不同的函数,每个函数都会生成一个图。
list_soal = ['SalePrice', 'GrLivArea', 'GarageArea']
# fig,ax = plt.subplots(1, 3, sharey=True, figsize=(14,4))
def function1(ax):
for i in range(len(list_soal)):
plt.suptitle('Histogram for Non-Transfomed Data')
sns.histplot(df_train[list_soal[i]], kde=False, stat='density', bins = 30, ax=ax[i])
sns.kdeplot(df_train[list_soal[i]], ax=ax[i])
# fig,ax = plt.subplots(1, 3, sharey=True, figsize=(14,4))
def function2(ax):
for i in range(len(list_soal)):
plt.suptitle('Histogram for Transfomed Data')
sns.histplot(np.log10(df_train[list_soal[i]]), kde=False, stat='density', bins = 30, ax=ax[i])
sns.kdeplot(np.log10(df_train[list_soal[i]]), ax=ax[i])
fig,ax = plt.subplots(2, 3, figsize=(20,8), sharey=True)
function1(ax[0])
function2(ax[1])
plt.show()
我想统一每一行的 y 轴。所以我在第17行声明了
sharey=True
。结果如下所示:
但是如果我删除第 17 行中的
sharey=True
,它会显示如下:
我也在
suptitle
中声明function2
。但没有显示标题。
我想知道如何设置标题并统一每个函数中每一行的 y 轴。
不要设置
sharey=True
,而是设置 sharey='row'
。这将告诉 matplotlib 每行子图应该共享一个 y 轴。
fig, ax = plt.subplots(2, 3, figsize=(20,8), sharey='row')
来自文档:
sharex、sharey
或bool
,默认:{'none', 'all', 'row', 'col'}
False
控制 x (
) 或 y (sharex
) 轴之间的属性共享:sharey
或True
:x 轴或 y 轴将在所有子图之间共享。'all'
或False
:每个子图 x 轴或 y 轴都是独立的。'none'
:每个子图行将共享一个 x 轴或 y 轴。'row'
:每个子图列将共享一个 x 轴或 y 轴。'col'
当子图沿列具有共享 x 轴时,仅创建底部子图的 x 刻度标签。同样,当子图沿行具有共享 y 轴时,仅创建第一列子图的 y 刻度标签。要稍后打开其他子图的刻度标签,请使用tick_params。
当子图具有带单位的共享轴时,调用
将使用新单位更新每个轴。Axis.set_units
请注意,无法取消共享轴。