graphPaname/app/processing.py

50 lines
1.0 KiB
Python

from base64 import b64encode
from io import BytesIO
from folium import Map
from app.preprocessing import create_dataframe
from constants import COORDINATES
def get_figure(plot):
plot_figure = plot.get_figure()
figure = BytesIO()
plot_figure.savefig(figure)
figure.seek(0)
return figure
def render_plot(df):
df.fillna(value=0, inplace=True)
plot = df.plot("year", ["surface", "length", "elevation"], kind="bar")
figure = get_figure(plot)
return figure
def encode_plot(figure):
plot = b64encode(figure.getvalue().decode())
return plot
def create_plot(df):
figure = render_plot(df)
plot = encode_plot(figure)
return plot
def create_map(df):
map = Map(location=COORDINATES)
for row in df.iterrows():
map.simple_marker(
location=[row["fields.geo_shape.coordinates"]], clustered_marker=True
)
return map
def process_data(dataset):
df = create_dataframe(dataset)
plot = create_plot(df)
map = create_map(df)
return plot, map