Построение соответствий из scipy.optimize.curve_fit и изменение формата строки

#python-3.x #matplotlib #scipy

#python-3.x #matplotlib #scipy

Вопрос:

Я пытался выполнить некоторые подгонки с помощью curve_fit и столкнулся с проблемой, из-за которой я не могу изменить формат строящейся линии. Когда я запускаю следующий код, в третьей строке выдается ‘AttributeError: Неизвестное свойство fmt’.

 plt.errorbar(data[:,0], data[:,1], data[:,2], data[:,3], fmt=format_data, label='Original data')
x_range = np.linspace(np.amin(data[:,0]), np.amax(data[:,0]), 100)
plt.plot(x_range, linear_fit(x_range, *fit[0][0]), label = 'Linear Fit', fmt='mo')
  

Где data — это массив numpy, содержащий мои данные x, y, xerr и yerr, а fit — это возврат операции curve_fit.

Если я удалю аргумент fmt, он отобразит все нормально и выберет формат по умолчанию. Я предполагаю, что это как-то связано с тем, что plt.plot ведет себя по-другому, когда вы строите график возврата функции. Я знаю, что могу вызвать .color и .marker для линейного объекта, возвращаемого plt.plot, но предпочел бы не делать этого.

Есть ли какое-либо исправление для этого?

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

1. fmt недопустимый аргумент ключевого слова для plt.plot . Вы можете видеть это из подписи функции . Один из вариантов — указать формат в качестве позиционного аргумента, plt.plot(x,y,'mo') ; другой вариант — использовать отдельные свойства, plt.plot(x,y,color='m', marker='o') .

2. Да, это была глупая ошибка. Спасибо!