Add plotting functionality

This commit is contained in:
2020-01-10 23:29:23 +01:00
parent 6baa8779ca
commit ee9558a1bb
13 changed files with 190 additions and 55 deletions

View File

@@ -0,0 +1,45 @@
from app import db
from io import BytesIO
from pandas import DataFrame, read_sql
from base64 import b64encode
def create_dataframe(query) -> DataFrame:
df = read_sql(sql=query, con=db.engine)
return df
def render_table(df) -> str:
df.fillna(value=0, inplace=True)
table = df.to_html(classes=["table-striped", "table-hover"])
return table
def render_plot(df):
df.fillna(value=0, inplace=True)
plot = df.plot("year", ["surface", "length", "elevation"], kind="bar")
plot_figure = plot.get_figure()
figure = BytesIO()
plot_figure.savefig(figure)
figure.seek(0)
return figure
def encode_plot(plot):
buffer = b"".join(plot)
buf = b64encode(buffer)
encoded_plot = buf.decode("utf-8")
return encoded_plot
def create_table(query) -> str:
df = create_dataframe(query)
html_table = render_table(df)
return html_table
def create_plot(query):
df = create_dataframe(query)
plot = render_plot(df)
encoded_plot = encode_plot(plot)
return encoded_plot

View File

@@ -1,19 +0,0 @@
from app import db
from pandas import DataFrame, read_sql
def create_dataframe(query) -> DataFrame:
df = read_sql(sql=query, con=db.engine)
return df
def render_table(df) -> str:
df.fillna(value=0, inplace=True)
table = df.to_html(classes=["table-striped", "table-hover"])
return table
def create_table(query) -> str:
df = create_dataframe(query)
html_table = render_table(df)
return html_table