Как построить график линейной функции Matplot в Django? - PullRequest
0 голосов
/ 06 мая 2019

Я создаю небольшую сеть с Django, и я ищу график линейной функции с машинным обучением, используя matplotlib. Когда я делаю код в Spyder, изображение выглядит так здесь

Однако при использовании Django и желании встроить график возникает ошибка, хотя этого не происходит, если я удаляю несколько строк кода. Это первая часть кода:

def plot(request):

plt.rcParams['figure.figsize'] = (9, 6)
plt.style.use('ggplot')
data = pd.read_csv("datos.csv")

filtered_data = data[(data['Fecha'] <= 30) & (data['Oxxos'] <= 50000)]

colores=['orange','blue']
tamanios=[30,60]

f1 = filtered_data['Fecha'].values
f2 = filtered_data['Oxxos'].values

f = plt.figure()

asignar=[]
for index, row in filtered_data.iterrows():
    if(row['Fecha']>7):
        asignar.append(colores[0])
    else:
        asignar.append(colores[1])
plt.scatter(f1, f2, c=asignar, s=tamanios[0])

dataX =filtered_data[["Fecha"]]
X_train = np.array(dataX)
y_train = filtered_data['Oxxos'].values

regr = linear_model.LinearRegression()

regr.fit(X_train, y_train)

y_pred = regr.predict(X_train)

## HERE IS WHERE THE CODE BELOW WOULD GO ##

buf = io.BytesIO()
canvas = FigureCanvasAgg(f)
canvas.print_png(buf)

response = HttpResponse(buf.getvalue(), content_type='image/png')

f.clear()

response['Content-Length'] = str(len(response.content))

return response

До этой части рисунок выглядит примерно так здесь . Код, вызывающий проблемы, - это код между y_pred = regr.predict (X_train) и buf = io.BytesIO (). Код, который идет между этими двумя строками, отвечает за построение линейной функции, однако при ее размещении возникает следующая ошибка здесь

def f(x):
    return regr.coef_*x+2420
x = range(0, 30)

plt.plot(x, [f(i) for i in x])
plt.axhline(0, color="black")
plt.axvline(0, color="black")

plt.xlim(0, 15)
plt.ylim(0, 20000)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...