Я пытаюсь подобрать кривую для двух наборов данных на одном наборе осей, используя twinx()
для создания второго набора осей и curve_fit
(из scipy.optimize
). Два набора данных соответствуют одной и той же кривой. Однако подбор не работает для одного набора данных, когда оба отображаются вместе.
Вот код. Функция BME_fit_plot
использует curve_fit
fig = plt.figure()
ax1 = plt.subplot(2,1,1)
ax2 = ax1.twinx()
ax1.errorbar(tools.phase_wrap(df47_narrow['Phase']), tools.wrap(tools.q_rot(df47_narrow['BQ'],
df47_narrow['BU'], 68.5)), yerr=0.05, fmt='o', capsize=3, color='b', label='WR47')
tools.BME_fit_plot(tools.BME_func_full, df47_narrow['Phase'], tools.q_rot(df47_narrow['BQ'],
df47_narrow['BU'], 68.5), 0.05)
ax2.errorbar(tools.phase_wrap(df71_narrow['Phase']), tools.wrap(tools.q_rot(df71_narrow['BQ'],
df71_narrow['BU'], 61)), yerr=0.05, fmt='o', capsize=3, color='k', label='WR71')
tools.BME_fit_plot(tools.BME_func_full, df71_narrow['Phase'], tools.q_rot(df71_narrow['BQ'],
df71_narrow['BU'], 61), 0.05)
. Я использую один и тот же код и точно такое же соответствие для обоих наборов данных, но первое совпадение (на ax1
) не подходит правильно . В коде нет ничего плохого, так как я использовал его изолированно (то есть на собственном графике), и он отлично работает. Я также делаю точно такую же подгонку на другом наборе осей: два набора данных и две подгонки наложены, и это работает там. Мне было интересно, может ли быть какой-то конфликт между пакетом curve_fit
и построением двойных осей? Опять же, это проблема только первого экземпляра моего подзаговора; второй, который следует той же самой структуре, работает нормально.