poeappfin / app.py
joanhightech's picture
Jm: add plotting of expenses and revenus per month
2382276
import gradio as gr
import pandas as pd
import matplotlib
import matplotlib.pyplot as plt
import altair as alt
import numpy as np
# documentation: https://www.gradio.app/guides/quickstart
# to use the reload mode use the Gradio cli in the terminal: gradio.exe app.py
def limit_analysis_to_12_months(input_lst):
if len(input_lst)>12:
input_lst = input_lst[:12]
else:
input_lst += [0] * (12 - len(input_lst))
return input_lst
def greet(Identite, revenus, depenses, epargne, dettes, is_ratio=False, is_graphe=True ):
# Revenus et Depenses
revenus = [float(rev.strip()) for rev in revenus.split(sep=',')]
revenus = limit_analysis_to_12_months(revenus)
depenses = [float(dep.strip()) for dep in depenses.split(sep=',')]
depenses = limit_analysis_to_12_months(depenses)
# Pandas DataFrame
mois = [
"janvier", "février", "mars",
"avril", "mai", "juin",
"juillet", "août", "septembre",
"octobre", "novembre", "décembre"
]
data = {'Mois': mois, 'Revenus': revenus, 'Depenses': depenses}
df = pd.DataFrame(data)
df['Cash_Flow'] = df['Revenus'] - df['Depenses']
df['Epargne'] = df['Cash_Flow'].cumsum()
#gr.DataFrame(get_data, every=5)
#Plot
#fig = plt.figure()
#plt.plot(df['Mois'], df['Cash_Flow'])
#plt.plot(df, x='Mois', y='Revenus')
#plt.title("Big TITLE")
lplot1 = gr.LinePlot(df, x="Mois", y="Revenus")
lplot2 = gr.LinePlot(df, x="Mois", y="Depenses")
return "Guten Tag " + Identite + "!", df, lplot1, lplot2
demo = gr.Interface(
fn=greet,
inputs=[gr.Textbox('John Doe', info='Rentrez votre prénom et votre nom', label='Identite'),
gr.Textbox('4123, 4566, 5667, 5322, 5600, 5800, 5200, 6050, 5400, 5700, 5900, 6400', info='Rentrez vos revenus des 12 derniers mois séparés par une virgule', label='Revenus'),
gr.Textbox('3123, 4500, 5000, 5200, 5500, 4100, 6400, 5950, 5900, 5800, 5600, 5990', info='Rentrez vos dépenses des 12 derniers mois séparées par une virgule', label='Dépenses'),
gr.Slider(0, 1_000_000, info='Indiquez votre épargne entre 0 et 1 million', label="Épargne"),
gr.Slider(0, 1_000_000, info='Indiquez vos dettes entre 0 et 1 million', label='Dettes'),
gr.Checkbox(False, info='Voulez-vous afficher vos ratios financiers?', label='Ratios'),
gr.Checkbox(True, info='Voulez-vous afficher le graphe de vos finances?', label='Graphe')],
outputs=["text", gr.DataFrame(), gr.LinePlot(), gr.LinePlot()],
)
"""
# Display()
if display_graph:
df.plot(x='Mois', y=['Revenus', 'Depenses', 'Cash_Flow', 'Epargne'], marker='o', color=['green', 'red', 'cyan', 'blue'], ylabel='Euros', rot=30)
else:
pass
"""
demo.launch()