Skip to content

Commit

Permalink
[tg] inversion graphs marques et REP
Browse files Browse the repository at this point in the history
  • Loading branch information
tgazagnes committed May 29, 2024
1 parent 9225aea commit 3f24729
Showing 1 changed file with 77 additions and 68 deletions.
145 changes: 77 additions & 68 deletions dashboards/app/pages/data.py
Original file line number Diff line number Diff line change
Expand Up @@ -1172,7 +1172,8 @@ def french_format(x: int) -> str:
nb_dechet_rep = rep_df["nb_dechet"].sum()
nb_rep = len(top_rep_df["Responsabilité élargie producteur"].unique())

# Metriques et graphs secteurs
### ANALYSE PAR SECTEUR
st.write("**Analyse par secteur économique**")
# Retrait des categoriés "VIDE" et "INDERTERMINE" si présentes et recupération des valeurs
nb_vide_indetermine = 0
if "VIDE" in top_secteur_df["Secteur"].unique():
Expand Down Expand Up @@ -1292,76 +1293,20 @@ def french_format(x: int) -> str:
with st.container(border=True):
st.plotly_chart(fig_secteur, use_container_width=True)

# Message d'avertissement Nombre de dechets dont le secteur n'a pas été determine
if nb_vide_indetermine != 0:
st.warning(
"⚠️ Il y a "
+ str(french_format(nb_vide_indetermine))
+ " déchets dont le secteur n'a pas été determiné dans les déchets collectés."
)

# Metriques et graphes marques
l2_col1, l2_col2 = st.columns(2)
cell4 = l2_col1.container(border=True)

# 1er métrique : nombre de dechets categorises par marques

cell4.metric(
"Nombre de déchets triés par marque",
french_format(nb_dechet_marque) + " déchets",
)

# 2ème métrique : nombre de marques identifiées lors des collectes
cell5 = l2_col2.container(border=True)
cell5.metric(
"Nombre de marques concernées",
french_format(nb_marques) + " marques",
)
# Message d'avertissement Nombre de dechets dont le secteur n'a pas été determine
if nb_vide_indetermine != 0:
st.warning(
"⚠️ Il y a "
+ str(french_format(nb_vide_indetermine))
+ " déchets dont le secteur n'a pas été determiné dans les déchets collectés."
)

# Configuration du graphique à barres
fig_marque = px.bar(
top_marque_df.tail(10).sort_values(by="Nombre de déchets", ascending=True),
x="Nombre de déchets",
y="Marque",
title="Top 10 des marques identifiées dans les déchets comptés",
color_discrete_sequence=["#1951A0"],
orientation="h",
text_auto=True,
)
### ANALYSE PAR FILIERE REP

# add log scale to x axis
fig_marque.update_layout(
# xaxis_type="log", # Pas besoin d'échelle log ici
height=700,
uniformtext_minsize=8,
uniformtext_mode="hide",
yaxis_title=None,
separators=", ",
)
# Paramétrage de la taille de police et de l'infobulle
fig_marque.update_traces(
textfont_size=14,
texttemplate="%{value:,.0f}",
hovertemplate="Marque : <b>%{y}</b><br> Quantité : <b>%{x:,.0f} déchets</b>",
st.write(
"**Analyse par filière de RResponsabilité Élargie du Producteur (REP)**"
)
fig_marque.update_yaxes(
tickfont=dict(size=14)
) # Taille des étiquettes en ordonnée

with st.container(border=True):
st.plotly_chart(fig_marque, use_container_width=True)

with st.container(border=True):
st.caption(
"La Responsabilité Élargie du Producteur (REP) est une obligation qui impose aux entreprises de payer une contribution financière"
+ " pour la prise en charge de la gestion des déchets issus des produits qu’ils mettent sur le marché selon le principe pollueur-payeur."
+ " Pour ce faire, elles doivent contribuer financièrement à la collecte, du tri et au recyclage de ces produits, "
+ "généralement à travers les éco-organismes privés, agréés par l’Etat, comme CITEO pour les emballages. "
+ "L’État a depuis 1993 progressivement mis en place 25 filières REP, qui regroupent de grandes familles de produits "
+ "(emballages ménagers, tabac, textile, ameublement, …)."
)

# Metriques et graphes Responsabilité elargie producteurs
l3_col1, l3_col2 = st.columns(2)
# Pour avoir 3 cellules avec bordure, il faut nester un st.container dans chaque colonne (pas d'option bordure dans st.column)
# Suppression de la catégorie "VIDE"
Expand All @@ -1380,7 +1325,7 @@ def french_format(x: int) -> str:
# 1ère métrique : nombre de dechets catégorisés repartis par responsabilités
cell6 = l3_col1.container(border=True)
cell6.metric(
"Quan de déchets catégorisés par filière REP",
"Quantité de déchets catégorisés",
french_format(nb_dechet_rep),
)

Expand All @@ -1391,6 +1336,16 @@ def french_format(x: int) -> str:
french_format(nb_rep) + " filières",
)

with st.expander("Qu'est-ce que la Responsabilité Élargie du Producteur ?"):
st.write(
"La Responsabilité Élargie du Producteur (REP) est une obligation qui impose aux entreprises de payer une contribution financière"
+ " pour la prise en charge de la gestion des déchets issus des produits qu’ils mettent sur le marché selon le principe pollueur-payeur."
+ " Pour ce faire, elles doivent contribuer financièrement à la collecte, du tri et au recyclage de ces produits, "
+ "généralement à travers les éco-organismes privés, agréés par l’Etat, comme CITEO pour les emballages. "
+ "L’État a depuis 1993 progressivement mis en place 25 filières REP, qui regroupent de grandes familles de produits "
+ "(emballages ménagers, tabac, textile, ameublement, …)."
)

# Treemap REP
figreptree = px.treemap(
top_rep_df.tail(10).sort_values(by="Nombre de déchets", ascending=True),
Expand Down Expand Up @@ -1426,6 +1381,60 @@ def french_format(x: int) -> str:
+ " déchets dont la filière REP n'a pas été determinée dans les déchets collectés."
)

### ANALYSES PAR MARQUE

st.write("**Analyse par marque**")

l2_col1, l2_col2 = st.columns(2)
cell4 = l2_col1.container(border=True)

# 1er métrique : nombre de dechets categorises par marques

cell4.metric(
"Nombre de déchets triés par marque",
french_format(nb_dechet_marque) + " déchets",
)

# 2ème métrique : nombre de marques identifiées lors des collectes
cell5 = l2_col2.container(border=True)
cell5.metric(
"Nombre de marques concernées",
french_format(nb_marques) + " marques",
)

# Configuration du graphique à barres
fig_marque = px.bar(
top_marque_df.tail(10).sort_values(by="Nombre de déchets", ascending=True),
x="Nombre de déchets",
y="Marque",
title="Top 10 des marques identifiées dans les déchets comptés",
color_discrete_sequence=["#1951A0"],
orientation="h",
text_auto=True,
)

# add log scale to x axis
fig_marque.update_layout(
# xaxis_type="log", # Pas besoin d'échelle log ici
height=700,
uniformtext_minsize=8,
uniformtext_mode="hide",
yaxis_title=None,
separators=", ",
)
# Paramétrage de la taille de police et de l'infobulle
fig_marque.update_traces(
textfont_size=14,
texttemplate="%{value:,.0f}",
hovertemplate="Marque : <b>%{y}</b><br> Quantité : <b>%{x:,.0f} déchets</b>",
)
fig_marque.update_yaxes(
tickfont=dict(size=14)
) # Taille des étiquettes en ordonnée

with st.container(border=True):
st.plotly_chart(fig_marque, use_container_width=True)


else:
st.markdown("## 🚨 Veuillez vous connecter pour accéder à l'onglet 🚨")

0 comments on commit 3f24729

Please sign in to comment.