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
To upload files, please first save the app
import streamlit as st
import pandas as pd
import matplotlib.pyplot as plt
# Création des données
subsidiaries = ['RDC', 'CONGO', 'GABON', 'CAMEROUN', 'TCHAD', 'BRAZIL']
chemical_groups = ['Group 1', 'Group 2', 'Group 3', 'Group 4', 'Group 5']
# Génération de données aléatoires pour l'exemple
# En pratique, ces données devraient venir de votre source de données réelle
data = {
'Subsidiary': [],
'Chemical_Group': [],
'Cost': []
}
import random
for subsidiary in subsidiaries:
for group in chemical_groups:
data['Subsidiary'].append(subsidiary)
data['Chemical_Group'].append(group)
# Générer un coût aléatoire entre 10000 et 100000
data['Cost'].append(random.uniform(10000, 100000))
# Création du DataFrame
df = pd.DataFrame(data)
# Pivotement des données pour créer le graphique empilé
pivot_data = df.pivot(index='Subsidiary', columns='Chemical_Group', values='Cost')
# Création du graphique
st.title('Coût des Produits Chimiques par Filiale')
# Définition des couleurs pour chaque groupe
colors = ['#FF9999', '#66B2FF', '#99FF99', '#FFCC99', '#FF99CC']
# Création du graphique avec matplotlib
fig, ax = plt.subplots(figsize=(12, 6))
bottom = np.zeros(len(subsidiaries))
for idx, group in enumerate(chemical_groups):
values = pivot_data[group]
ax.bar(subsidiaries, values, bottom=bottom, label=group, color=colors[idx])
bottom += values
# Personnalisation du graphique
plt.title('Coût des Produits Chimiques par Filiale et par Groupe')
plt.xlabel('Filiales')
plt.ylabel('Coût ($/year)')
plt.legend(title='Groupes de Produits Chimiques')
plt.xticks(rotation=45)
# Ajout des valeurs totales au-dessus de chaque barre
total_costs = pivot_data.sum(axis=1)
for i, total in enumerate(total_costs):
plt.text(i, total, f'${total:,.0f}', ha='center', va='bottom')
# Ajustement de la mise en page
plt.tight_layout()
# Affichage du graphique dans Streamlit
st.pyplot(fig)
# Affichage des données en format tableau
st.subheader('Données détaillées')
st.dataframe(pivot_data.round(2))
Hi! I can help you with any questions about Streamlit and Python. What would you like to know?