Есть ли когда-нибудь конфликт между curve_fit и plt? - PullRequest
0 голосов
/ 06 августа 2020

Я пытаюсь подобрать кривую для двух наборов данных на одном наборе осей, используя 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 и построением двойных осей? Опять же, это проблема только первого экземпляра моего подзаговора; второй, который следует той же самой структуре, работает нормально.

...