#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. Тогда я прошу прощения, так как думал, что это просто. Я добавил воспроизводимый код.