#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 да, на самом деле это сработало. Я представлял себе это намного сложнее! Спасибо большое.