Update app.py
Browse files
app.py
CHANGED
@@ -338,7 +338,7 @@ def plot_ph_week():
|
|
338 |
|
339 |
# Выбираем данные за выбранную неделю
|
340 |
cursor.execute('''
|
341 |
-
SELECT date_time, ph, dey
|
342 |
FROM system_data
|
343 |
WHERE wek = ?
|
344 |
ORDER BY date_time
|
@@ -360,21 +360,35 @@ def plot_ph_week():
|
|
360 |
</html>
|
361 |
'''
|
362 |
|
363 |
-
# Формируем данные для
|
364 |
-
dates = [f"{row[0]} (d: {row[
|
365 |
ph_values = [float(row[1]) for row in rows]
|
|
|
366 |
|
367 |
-
# Создаём
|
368 |
-
plt.figure(figsize=(15,
|
369 |
-
|
|
|
|
|
|
|
370 |
plt.title(f'График pH за {week_number}-ю неделю')
|
371 |
plt.xlabel('Дата и день недели')
|
372 |
plt.ylabel('Значение pH')
|
373 |
-
plt.xticks(rotation=90, fontsize=8)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
374 |
plt.grid(True)
|
|
|
375 |
plt.gcf().subplots_adjust(bottom=0.4)
|
376 |
|
377 |
-
# Сохраняем
|
378 |
buffer = io.BytesIO()
|
379 |
plt.savefig(buffer, format='png')
|
380 |
buffer.seek(0)
|
@@ -382,15 +396,15 @@ def plot_ph_week():
|
|
382 |
# Кодируем график в base64
|
383 |
plot_data = base64.b64encode(buffer.getvalue()).decode('utf-8')
|
384 |
|
385 |
-
# Возвращаем HTML
|
386 |
return f'''
|
387 |
<html>
|
388 |
<body>
|
389 |
-
<h1
|
390 |
<button onclick="window.location.href='/plot_ph_week?week={week_number - 1}'" {"disabled" if week_number == 1 else ""}>Предыдущая неделя</button>
|
391 |
<button onclick="window.location.href='/plot_ph_week?week={week_number + 1}'" {"disabled" if week_number == 30 else ""}>Следующая неделя</button>
|
392 |
<br><br>
|
393 |
-
<img src="data:image/png;base64,{plot_data}" alt="
|
394 |
</body>
|
395 |
</html>
|
396 |
'''
|
@@ -414,7 +428,6 @@ def plot_ph_week():
|
|
414 |
|
415 |
|
416 |
|
417 |
-
|
418 |
@app.route("/")
|
419 |
def index():
|
420 |
return flask.render_template('index.html')
|
|
|
338 |
|
339 |
# Выбираем данные за выбранную неделю
|
340 |
cursor.execute('''
|
341 |
+
SELECT date_time, ph, ec, dey
|
342 |
FROM system_data
|
343 |
WHERE wek = ?
|
344 |
ORDER BY date_time
|
|
|
360 |
</html>
|
361 |
'''
|
362 |
|
363 |
+
# Формируем данные для графиков
|
364 |
+
dates = [f"{row[0]} (d: {row[3]})" for row in rows]
|
365 |
ph_values = [float(row[1]) for row in rows]
|
366 |
+
ec_values = [float(row[2]) for row in rows]
|
367 |
|
368 |
+
# Создаём графики
|
369 |
+
plt.figure(figsize=(15, 12)) # Увеличил высоту для двух графиков
|
370 |
+
|
371 |
+
# График pH
|
372 |
+
plt.subplot(2, 1, 1)
|
373 |
+
plt.plot(dates, ph_values, linestyle='-', color='b')
|
374 |
plt.title(f'График pH за {week_number}-ю неделю')
|
375 |
plt.xlabel('Дата и день недели')
|
376 |
plt.ylabel('Значение pH')
|
377 |
+
plt.xticks(rotation=90, fontsize=8)
|
378 |
+
plt.grid(True)
|
379 |
+
|
380 |
+
# График EC
|
381 |
+
plt.subplot(2, 1, 2)
|
382 |
+
plt.plot(dates, ec_values, linestyle='-', color='g')
|
383 |
+
plt.title(f'График EC за {week_number}-ю неделю')
|
384 |
+
plt.xlabel('Дата и день недели')
|
385 |
+
plt.ylabel('Значение EC')
|
386 |
+
plt.xticks(rotation=90, fontsize=8)
|
387 |
plt.grid(True)
|
388 |
+
|
389 |
plt.gcf().subplots_adjust(bottom=0.4)
|
390 |
|
391 |
+
# Сохраняем графики в буфер
|
392 |
buffer = io.BytesIO()
|
393 |
plt.savefig(buffer, format='png')
|
394 |
buffer.seek(0)
|
|
|
396 |
# Кодируем график в base64
|
397 |
plot_data = base64.b64encode(buffer.getvalue()).decode('utf-8')
|
398 |
|
399 |
+
# Возвращаем HTML
|
400 |
return f'''
|
401 |
<html>
|
402 |
<body>
|
403 |
+
<h1>Графики pH и EC за {week_number}-ю неделю</h1>
|
404 |
<button onclick="window.location.href='/plot_ph_week?week={week_number - 1}'" {"disabled" if week_number == 1 else ""}>Предыдущая неделя</button>
|
405 |
<button onclick="window.location.href='/plot_ph_week?week={week_number + 1}'" {"disabled" if week_number == 30 else ""}>Следующая неделя</button>
|
406 |
<br><br>
|
407 |
+
<img src="data:image/png;base64,{plot_data}" alt="Графики pH и EC">
|
408 |
</body>
|
409 |
</html>
|
410 |
'''
|
|
|
428 |
|
429 |
|
430 |
|
|
|
431 |
@app.route("/")
|
432 |
def index():
|
433 |
return flask.render_template('index.html')
|