Рисунок с подзаголовками, использующими разные типы построения

#python #matplotlib #attributes #subplot #figure

#python #matplotlib #атрибуты #подзаголовок #рисунок

Вопрос:

Как я могу построить рисунок с несколькими подзаголовками, используя разные типы графиков (line, scatter и т. Д.)?
При попытке использовать plt.scatter или plot.scatter или другие, я получаю сообщение об ошибке:

Объект ‘AxesSubplot’ не имеет атрибута ‘plt’

Как я могу инициировать атрибут здесь?

При использовании «обычных» осей графика [2].plot(kind= ‘scatter’) в качестве атрибута я получаю сообщение об ошибке:

Неизвестный тип свойства

При простом равномерном использовании axes.plot(x, y, ….) для каждого из трех подзаголовков они отображаются так же, как линейные графики

 fig,axes = plt.subplots(nrows=1, ncols=3, figsize=(21,4))
fig =  plt.figure()


axes[0].plot(dur_d,inter_d,color='purple', lw=0.5, alpha=0.5, linestyle='dashed',marker=' ',markersize=10,markeredgecolor='red',markeredgewidth=3) # RGB Hex Code
axes[0].set_xlabel('Duration')
axes[0].set_ylabel('Interest')
axes[0].set_title('Interest on different loan durations')

axes[1].plot(amount_a,inter_a,color='purple', lw=0.5, alpha=1, linestyle='dashed',marker=' ',markersize=1,markeredgecolor='red',markeredgewidth=1) # RGB Hex Code
axes[1].set_xlabel('Loan amount')
axes[1].set_ylabel('Interest')
axes[1].set_title('Interest on different loan amounts')

axes[2].plt.scatter(ltv_l,inter_l,alpha=0.5, color='purple') # RGB Hex Code
axes[2].set_xlabel('LTV')
axes[2].set_ylabel('Interest')
axes[2].set_title('Interest on different LTV')
 

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

1. Вы не должны вызывать fig = plt.figure() , поскольку это стирает фигуру и оси, созданные fig,axes = plt.subplots(...) . Также обратите внимание, что существует разница в соглашениях о вызовах между стандартными matplotlib ( ax.scatter(....) ) и pandas ( my_dataframe.plot(kind=..., ax=axes[0] ). Построение Pandas использует matplotlib внутри, но имеет другой способ вызова своих функций, сосредоточенных на фреймах данных. Это действительно сбивает с толку, когда вы сталкиваетесь с ними в первый раз. Кроме того, функции matplotlib часто используются для точной настройки графиков pandas.

2. Короче говоря, исключение fig = plt.figure() и замена axes[2].plt.scatter(...) на axes[2].scatter(...) , вероятно, должны заставить вещи работать (в зависимости от того, что находится внутри переменных).

3. @JohanC да, на самом деле это сработало. Я представлял себе это намного сложнее! Спасибо большое.