Seaborn regplot с горизонтальными подзаголовками с sharey= True и отображением y меток

#matplotlib #regression #seaborn

#matplotlib #регрессия #seaborn

Вопрос:

У меня есть эти три графика рядом, однако я хочу сделать следующее: -увеличить размер графиков -немного разделить их, чтобы можно было более четко видеть ось y -см. Значения по оси y для двух графиков с правой стороны.

кто-нибудь знает, как сделать это эффективно? Спасибо

 fig, (ax1, ax2, ax3) = plt.subplots(ncols=3, sharey=True)
sns.regplot(x=Dem['Price'], y=Dem['A'], color="g", ax=ax1)
sns.regplot(x=Dem['Price'], y=Dem['B'], color="b", ax=ax2)
sns.regplot(x=Dem['Price'], y=Dem['C'], color="purple", ax=ax3)
 

введите описание изображения здесь

Комментарии:

1. Если я ответил на ваш вопрос, пожалуйста, примите его как решение, нажав на галочку рядом с моим решением. Пожалуйста, ознакомьтесь со следующей ссылкой, которая показывает вам изображение того, как это сделать: meta.stackexchange.com/questions/5234 /…

2. Спасибо, Дэвид. Это было именно то, что я искал.

Ответ №1:

  1. Вы можете использовать: fig.set_figwidth(25) чтобы расширить фигуру и создать пробел, передавая любое числовое значение, которое вы пожелаете, например 25 .
  2. Чтобы пометить метки по оси y для всех подзаголовков, используйте:
     for ax in fig.axes:
        ax.tick_params(axis='y', labelleft=True)
     

Полный воспроизводимый пример кода с flights набором данных seaborn:

 import seaborn as sns
df = sns.load_dataset('flights')
df1 = df[df['year']==1949]
df2 = df[df['year']==1950]
df3 = df[df['year']==1951]
fig, (ax1, ax2, ax3) = plt.subplots(ncols=3, sharey=True)

#1
fig.set_figwidth(25)

sns.regplot(x=df1['year'], y=df1['passengers'], color="g", ax=ax1)
sns.regplot(x=df2['year'], y=df2['passengers'], color="b", ax=ax2)
sns.regplot(x=df3['year'], y=df3['passengers'], color="purple", ax=ax3)

#2
for ax in fig.axes:
    ax.tick_params(axis='y', labelleft=True)
 

введите описание изображения здесь

Ваш код:

 fig, (ax1, ax2, ax3) = plt.subplots(ncols=3, sharey=True)
fig.set_figwidth(25)
sns.regplot(x=Dem['Price'], y=Dem['A'], color="g", ax=ax1)
sns.regplot(x=Dem['Price'], y=Dem['B'], color="b", ax=ax2)
sns.regplot(x=Dem['Price'], y=Dem['C'], color="purple", ax=ax3)
for ax in fig.axes:
    ax.tick_params(axis='y', labelleft=True)