У меня есть следующие данные csv:
Dataset Size,MAPE,MAE,STD MAPE,STD MAE
35000,0.0715392337,23.38300578,0.9078698348,2.80407539
26250,0.06893431034,22.34732326,0.9833948236,1.926517044
17500,0.0756695622,26.0900766,0.6055443674,8.842862631
8750,0.07176532526,23.02646184,0.8284005282,2.190506033
4200,0.08661127364,29.89234607,0.9395831421,7.587818412
2100,0.08072315267,27.20110884,0.03956974712,4.948606892
1050,0.07505202908,27.04025924,0.841966778,4.550482956
700,0.07703248113,26.17923045,0.4468447145,1.523638508
350,0.08695408769,32.35331585,0.7891190087,4.18648457
200,0.09770903032,30.96197823,0.04648972591,3.892800694
170,0.1202382169,41.87828814,0.7257680584,6.70453713
150,0.1960949784,77.20321559,0.5661066006,21.57418682
Из приведенных выше данных я хотел бы создать следующий график, используя matplotlib или аналогичный (seaborn, pandas, et c.):
![Example Plot Generated In Google Sheets](https://i.stack.imgur.com/60MKq.png)
from pathlib import Path
from matplotlib import animation
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from scipy.optimize import curve_fit
nr_datapoints = 10
def exponenial_func(x, a, b, c):
return a*np.exp(-b*x)+c
def myplot(data_file):
df = pd.read_csv(data_file)
print(df.head())
fig, ax = plt.subplots()
# Exponential line fit
popt, pcov = curve_fit(exponenial_func, np.array([float(i) for i in range(len(df['Dataset Size']))]), df['MAPE'], p0=(0, 0.0145, 0.0823))
xp = np.linspace(0,len(df['Dataset Size']), 100)
plt.plot(xp, exponenial_func(xp, *popt), color = 'g')
# barplote with error bars
ax.bar([str(s) for s in df['Dataset Size']], df['MAPE'], yerr=df['STD MAPE'])
plt.title('Accuracy of Model vs. Dataset Size')
plt.xlabel('Dataset Size')
plt.ylabel('Mean Absolute Percentage Error')
fig.tight_layout()
plt.show()
График, который я получаю, выглядит следующим образом: ![Graph produced by the above code](https://i.stack.imgur.com/trBro.png)
Почему Я получаю строку, а не кривую из моего кода, несмотря на подгонку экспоненциальной функции к данным? (Учитывая, что график листов Google делает то же самое, например, подгоняет экспоненциальную кривую к данным)