First plot: beer over time - beer still hardcoded at index 1
This commit is contained in:
77
app/plot.py
Normal file
77
app/plot.py
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
from matplotlib import pyplot as plt
|
||||||
|
from matplotlib.dates import WeekdayLocator, DayLocator, HourLocator, DateFormatter, drange, MONDAY
|
||||||
|
import numpy as np
|
||||||
|
from user import User
|
||||||
|
from database import *
|
||||||
|
|
||||||
|
def plot_total(user = None):
|
||||||
|
|
||||||
|
today = datetime.date.today()
|
||||||
|
delta = datetime.timedelta(days=1)
|
||||||
|
begin = datetime.date.today() - datetime.timedelta(weeks=4)
|
||||||
|
dates = drange(begin, today, delta)
|
||||||
|
|
||||||
|
# all_consumptions = list(10)
|
||||||
|
# for consumptions in all_consumptions: #todo fix
|
||||||
|
consumptions = np.zeros(len(dates))
|
||||||
|
|
||||||
|
#print consumptions
|
||||||
|
|
||||||
|
consumed = get_consumed()
|
||||||
|
for consumption in consumed:
|
||||||
|
if consumption.prodnr == 1:
|
||||||
|
if user == None or consumption.consumer == user.id:
|
||||||
|
if consumption.time.date() > begin:
|
||||||
|
consumptions[(consumption.time.date() - begin).days - 1] += 1
|
||||||
|
plt.xkcd()
|
||||||
|
|
||||||
|
|
||||||
|
fig, ax = plt.subplots()
|
||||||
|
|
||||||
|
ax.plot(dates, consumptions, linestyle='-', marker='')
|
||||||
|
|
||||||
|
# ax.axes.margins = 1 # x margin. See `axes.Axes.margins`
|
||||||
|
# ax.axes.ymargin = 1 # y margin See `axes.Axes.margins`
|
||||||
|
|
||||||
|
plt.xticks(rotation='vertical')
|
||||||
|
|
||||||
|
ax.spines['right'].set_visible(False)
|
||||||
|
ax.spines['top'].set_visible(False)
|
||||||
|
|
||||||
|
ax.yaxis.set_ticks_position('left')
|
||||||
|
ax.xaxis.set_ticks_position('bottom')
|
||||||
|
|
||||||
|
plt.tick_params(which='minor', length=4)
|
||||||
|
plt.tick_params(which='major', length=5)
|
||||||
|
|
||||||
|
#ax.xaxis.set_major_locator(WeekdayLocator(MONDAY))
|
||||||
|
#ax.xaxis.set_major_locator(DayLocator())
|
||||||
|
ax.xaxis.set_major_formatter(DateFormatter('%d.%m'))
|
||||||
|
#ax.xaxis.set_minor_formatter(DateFormatter('%d.%m'))
|
||||||
|
|
||||||
|
#ax.fmt_xdata = DateFormatter('%d.%m')
|
||||||
|
fig.autofmt_xdate()
|
||||||
|
|
||||||
|
plt.annotate(
|
||||||
|
'THE DAY I REALIZED\nI COULD COOK BACON\nWHENEVER I WANTED',
|
||||||
|
xy=(30, 1), arrowprops=dict(arrowstyle='->'), xytext=(15, -10))
|
||||||
|
|
||||||
|
plt.xlabel('Datum')
|
||||||
|
plt.ylabel('Halbe')
|
||||||
|
|
||||||
|
if user == None:
|
||||||
|
tit = "Bierkonsum FET"
|
||||||
|
fils = "app/static/total.png"
|
||||||
|
fill = "app/static/total_big.png"
|
||||||
|
else:
|
||||||
|
tit = "Bierkonsum %s" % user.name
|
||||||
|
fils = "app/static/total%03d.png" % user.id
|
||||||
|
fill = "app/static/total%03d_big.png" % user.id
|
||||||
|
plt.title(tit)
|
||||||
|
|
||||||
|
#480x320
|
||||||
|
fig.set_size_inches(4.8, 3.2)
|
||||||
|
plt.savefig(fils, dpi=100)
|
||||||
|
|
||||||
|
fig.set_size_inches(4.8, 3.2)
|
||||||
|
plt.savefig(fill, dpi=400)
|
||||||
@@ -2,6 +2,7 @@ from check_rights import *
|
|||||||
from flask import render_template, request, redirect, session, send_from_directory
|
from flask import render_template, request, redirect, session, send_from_directory
|
||||||
from app import app
|
from app import app
|
||||||
from database import *
|
from database import *
|
||||||
|
from plot import *
|
||||||
from user import User
|
from user import User
|
||||||
from product import Product
|
from product import Product
|
||||||
from consumption import Consumption
|
from consumption import Consumption
|
||||||
@@ -17,6 +18,7 @@ def static_proxy(path):
|
|||||||
@app.route('/index')
|
@app.route('/index')
|
||||||
def index():
|
def index():
|
||||||
consumed = get_consumed()
|
consumed = get_consumed()
|
||||||
|
plot_total()
|
||||||
return render_template("index.html", consumed=consumed, user=get_user_by_name(session.get('name')))
|
return render_template("index.html", consumed=consumed, user=get_user_by_name(session.get('name')))
|
||||||
|
|
||||||
|
|
||||||
@@ -147,9 +149,10 @@ def consume():
|
|||||||
username = session.get('name')
|
username = session.get('name')
|
||||||
add_consume(username, prod.id)
|
add_consume(username, prod.id)
|
||||||
message = "Du hast gerade ein %s konsumiert." % prod.name
|
message = "Du hast gerade ein %s konsumiert." % prod.name
|
||||||
|
plot_total(get_user_by_name(session.get('name')))
|
||||||
|
plot_total()
|
||||||
return render_template('consume.html', products=products, message=message, user=get_user_by_name(session.get('name')))
|
return render_template('consume.html', products=products, message=message, user=get_user_by_name(session.get('name')))
|
||||||
|
|
||||||
|
|
||||||
@app.route('/billing')
|
@app.route('/billing')
|
||||||
@requires_baron
|
@requires_baron
|
||||||
def billing():
|
def billing():
|
||||||
|
|||||||
Reference in New Issue
Block a user