créé un graphique avec des histogrammes empilées avec comme axe des abscisses les subsidiaries (RDC, CONGO, GABON, CAMEROUN, TCHAD, BRAZIL) et comme ordonnées le coût par an en $/year. Le diagramme représente le coût des produits chimiques par filiale, les produits chimiques sont regroupés par groupe (il y en a 5) et chaque groupe a une couleur différentes sur l'histogramme il faut que ça soit des données que je puisse rentrer moi même (pas de données aléatoires)
To upload files, please first save the app
import streamlit as st
import pandas as pd
import plotly.graph_objects as go
st.title("Coût des Produits Chimiques par Filiale")
# Création d'un formulaire pour saisir les données
st.subheader("Saisie des Coûts par Groupe et par Filiale")
# Liste des filiales et groupes de produits chimiques
subsidiaries = ['RDC', 'CONGO', 'GABON', 'CAMEROUN', 'TCHAD', 'BRAZIL']
chemical_groups = ['Groupe 1', 'Groupe 2', 'Groupe 3', 'Groupe 4', 'Groupe 5']
# Création d'un dictionnaire pour stocker les données
if 'cost_data' not in st.session_state:
st.session_state.cost_data = {
subsidiary: {group: 0 for group in chemical_groups}
for subsidiary in subsidiaries
}
# Interface de saisie avec colonnes
cols = st.columns(len(subsidiaries))
for idx, subsidiary in enumerate(subsidiaries):
with cols[idx]:
st.write(f"**{subsidiary}**")
for group in chemical_groups:
st.session_state.cost_data[subsidiary][group] = st.number_input(
f"{group}",
value=float(st.session_state.cost_data[subsidiary][group]),
key=f"{subsidiary}_{group}",
step=1000.0
)
# Création du graphique
fig = go.Figure()
# Couleurs pour chaque groupe
colors = ['#FF9999', '#66B2FF', '#99FF99', '#FFCC99', '#FF99CC']
# Ajout des barres empilées pour chaque groupe
for idx, group in enumerate(chemical_groups):
values = [st.session_state.cost_data[subsidiary][group] for subsidiary in subsidiaries]
fig.add_trace(go.Bar(
name=group,
x=subsidiaries,
y=values,
marker_color=colors[idx]
))
# Mise en forme du graphique
fig.update_layout(
barmode='stack',
title='Coût des Produits Chimiques par Filiale et par Groupe',
xaxis_title='Filiales',
yaxis_title='Coût ($/année)',
showlegend=True,
legend_title='Groupes de Produits'
)
# Affichage du graphique
st.plotly_chart(fig, use_container_width=True)
# Affichage des données sous forme de tableau
st.subheader("Tableau des données")
data_for_df = {subsidiary: [st.session_state.cost_data[subsidiary][group]
for group in chemical_groups]
for subsidiary in subsidiaries}
df = pd.DataFrame(data_for_df, index=chemical_groups)
st.dataframe(df)
# Calcul et affichage des totaux
st.subheader("Totaux par filiale")
totals = df.sum()
st.dataframe(totals.to_frame(name="Total ($/année)"))
Hi! I can help you with any questions about Streamlit and Python. What would you like to know?