Во втором ответе на первый вопрос, который вы связали (@ImportanceofBeingErnest), предлагается добавить существующую ось к другому рисунку, что невозможно в новых версиях matplotlib.
Как сказано в , ответе «оси не могут жить сразу несколькими цифрами». Поэтому вам нужно будет удалить его из одного и добавить к другому. Я бы подумал, что это больше хлопот, чем его ценность - вероятно, было бы лучше просто иметь функцию, которая принимает экземпляр осей в качестве входных данных для построения графика, затем вы можете передать оси из фиг, а затем из фиг2, чтобы получить то же самое график на каждом рисунке.
Быстрый пример того, как я думаю, это может работать для вашего кода (не проверено, но, надеюсь, вы поняли идею):
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
df = pd.DataFrame({'a': ['one', 'one', 'two', 'two', 'one', 'two', 'one', 'one', 'one', 'two'],
'b': [1, 2, 1, 2, 1, 2, 1, 2, 1, 1],
'c': [1, 2, 3, 4, 6, 1, 2, 3, 4, 6]})
# First fig
fig, ax = plt.subplots(ncols=3)
ax = ax.flatten()
# Some other fig
fig2, ax2 = plt.subplots(figsize=(4, 5))
def myboxplot(ax, df, myvar):
''' A function that takes the Axes instance as an input an plots a boxplot '''
sns.boxplot(data=df, x='a', y=myvar, ax=ax)
def myscatterplot(ax, df):
''' A function that takes the Axes instance as an input an plots a scatterplot '''
g=sns.scatterplot(data=df, x='b', y='c', ax=ax)
# Call the first function for the first 2 axes
myboxplot(ax[0], df, 'b')
myboxplot(ax[1], df, 'c')
# Call the scatterplot function for an axes on the first fig
myscatterplot(ax[2], df)
# Call the scatterplot function for an axes on the second fig
myscatterplot(ax2, df)
plt.show()