добавить объект построения к фигуре на оси

#matplotlib

#matplotlib

Вопрос:

Я пытаюсь добавить график внутри фигуры, что-то вроде этого:

 fig, axs = plt.subplots(1,2, figsize =(10,5))
plot1 = customized_function(x1, y1) # any plot object
plot2 = customized_function(x2, y2) # any plot object
axs[0] = plot1 # adding the plot1 to the figure
axs[1] = plot2 # adding the plot2 to the figure
  

Но я не могу найти способ добавить plot1 и plot2 в рисунок. Я повсюду искал решение, и решение не соответствует моим потребностям. Решение, которое я нахожу, заключается в следующем:

 fig, (ax1, ax2) = plt.subplots(2)
fig.suptitle('Axes values are scaled individually by default')
ax1.plot(x, y)
ax2.plot(x   1, -y)
  

Однако графики, которые я хочу добавить, уже готовы.

Есть предложения?

Воспроизводимый код:

 from sklearn.metrics import roc_curve
def customized_function(y_train, prob_train):
    fpr = dict()
    tpr = dict()

    fpr, tpr, _ = roc_curve(y_train, prob_train)
    roc_auc = dict()
    roc_auc = auc(fpr, tpr)

    # make the plot
    plt.figure(figsize=(10, 10))
    plt.plot(fpr, tpr)
    plt.title('ROC curve and AUC')
    plt.show()
    

y_train = np.array([0,0,0,0,0,1,1,1,0,1])
prob_train = np.array([0.1,0.2,0.3,0.4,0.5,0.1,0.1,0.8,0.9,1])

y_test = np.array([0,1,1,0,0,0,1,0,0,1])
prob_test = np.array([0.1,0.4,0.2,0.5,0.1,0.1,0.2,0.8,0.3,0.1])

customized_function(y_train, prob_train)
customized_function(y_test, prob_test)
  

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

1. Я действительно не могу понять вашу точку зрения. После ax2.plot(x 1, -y) вы все еще можете настроить стили отображения, такие как размер шрифта, галочки, метки, текст и т.д. Первый приведенный выше блок кода НЕ является стандартным способом построения графика в matplotlib.

Ответ №1:

Рекомендуемый способ написания функции построения — передать ссылку на оси в функцию:

 def function_customized_plot(x, y, ax=None):
    if ax is None:
        ax = plt.gca()
    (...) # rest of your code here

fig, axs = plt.subplots(1,2, figsize =(10,5))
function_customized_plot(x1, y1, ax=axs[0])
function_customized_plot(x2, y2n ax=axs[1])
  

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

1. Он запускается, но не работает. Он по-прежнему возвращает фигуру с двумя пустыми графиками.

2. Поскольку вы не предоставили код для своей функции построения графика, я больше не могу помочь

3. Тогда я прошу прощения, так как думал, что это просто. Я добавил воспроизводимый код.