Skip to main content

Un composant Streamlit pour afficher des KPI circulaires

Project description

🎯 Streamlit Circular KPI

Un composant Streamlit personnalisé pour afficher des indicateurs de performance clés (KPI) sous forme de graphiques circulaires élégants et interactifs.

✨ Fonctionnalités

  • 📊 Graphiques circulaires animés avec dégradés de couleurs
  • 📈 Statistiques visuelles (Min, Max, Moyenne) positionnées selon leur valeur
  • 🎨 4 schémas de couleurs prédéfinis (bleu-violet, vert, rouge, orange)
  • 🔧 Hautement personnalisable (taille, couleurs, unités, etc.)
  • 📱 Responsive et adapté aux layouts Streamlit
  • 🖱️ Interactif avec callbacks de clic
  • 🎯 Police Urbanist pour un design moderne

🚀 Installation

pip install st-circular-kpi

📋 Démarrage rapide

import streamlit as st
from st_circular_kpi import circular_kpi

st.title("Mon Dashboard KPI")

# KPI simple
result = circular_kpi(
    value=85,
    label="Performance",
    unit="%",
    color_scheme="blue_purple"
)

🎨 Exemples d'utilisation

KPI avec statistiques complètes

circular_kpi(
    value=80,                    # Valeur principale
    label="Performance", 
    range=(0, 100),             # Range du cercle [0-100]
    min_value=50,               # Minimum affiché
    max_value=90,               # Maximum affiché
    mean_value=70,              # Moyenne affichée
    unit="%",
    color_scheme="blue_purple",
    size=200,
    background_color="transparent",
    key="perf"
)

Différents KPI en colonnes

col1, col2, col3, col4 = st.columns(4)

with col1:
    circular_kpi(
        value=1250,
        label="Ventes",
        range=(0, 2000),
        mean_value=1100,
        unit="€",
        color_scheme="green",
        key="sales"
    )

with col2:
    circular_kpi(
        value=12,
        label="Erreurs",
        range=(0, 50),
        mean_value=25,
        color_scheme="red",
        key="errors"
    )

with col3:
    circular_kpi(
        value=4.2,
        label="Satisfaction",
        range=(1, 5),
        mean_value=3.8,
        unit="/5",
        color_scheme="orange",
        key="satisfaction"
    )

🔧 API de référence

Paramètres

Paramètre Type Défaut Description
value float 80 Valeur principale du KPI
label str "KPI" Libellé affiché sous la valeur
range tuple (0, 100) Range min/max pour les calculs d'angles
min_value float None Valeur minimale à afficher
max_value float None Valeur maximale à afficher
mean_value float None Valeur moyenne à afficher
unit str "" Unité affichée après la valeur
color_scheme str "blue_purple" Schéma de couleurs
size int 200 Taille du composant en pixels
show_stats bool True Afficher/masquer les statistiques
background_color str "transparent" Couleur de fond
percentage float 80 Pourcentage de remplissage de l'arc
key str None Clé unique pour Streamlit

Schémas de couleurs disponibles

  • "blue_purple" : Dégradé bleu vers violet
  • "green" : Tons de vert
  • "red" : Tons de rouge
  • "orange" : Tons d'orange

Valeur de retour

Le composant retourne un dictionnaire contenant :

{
    "value": 80,
    "label": "Performance", 
    "percentage": 80,
    "timestamp": "2024-01-15T10:30:00.000Z"
}

🎨 Personnalisation avancée

Couleurs personnalisées

Pour ajouter vos propres schémas de couleurs, modifiez le fichier CustomComponent.tsx :

const colorSchemes: Record<string, ColorScheme> = {
  // ... schémas existants
  custom: {
    primary: '#your-color',
    secondary: '#your-secondary-color', 
    background: 'transparent'
  }
}

Positionnement des statistiques

Les statistiques (Min, Max, Mean) sont positionnées automatiquement selon leur valeur dans le range défini :

  • Position angulaire : ((valeur - min_range) / (max_range - min_range)) * 360°
  • Texte extérieur : à radius + 10px du centre
  • Indicateur "Mean" : à radius - 30px du centre

🛠️ Développement

Structure du projet

st_circular_kpi/
├── st_circular_kpi/
│   ├── __init__.py
│   └── frontend/
│       ├── src/
│       │   ├── CustomComponent.tsx  # Composant React principal
│       │   └── main.tsx
│       ├── package.json
│       └── index.html
├── example.py                       # Exemples d'utilisation
├── setup.py
└── README.md

Lancer l'exemple

cd st_circular_kpi
python -m streamlit run example.py

🤝 Contribution

Les contributions sont les bienvenues ! Pour contribuer :

  1. Forkez le projet
  2. Créez une branche feature (git checkout -b feature/nouvelle-fonctionnalite)
  3. Committez vos changements (git commit -am 'Ajout nouvelle fonctionnalité')
  4. Poussez vers la branche (git push origin feature/nouvelle-fonctionnalite)
  5. Ouvrez une Pull Request

📄 Licence

Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.

🚀 Versions

v0.1.0

  • ✅ Composant KPI circulaire de base
  • ✅ Schémas de couleurs prédéfinis
  • ✅ Statistiques visuelles (Min/Max/Mean)
  • ✅ Police Urbanist par défaut
  • ✅ Arc de fond subtil pour la partie non complétée

Créé avec ❤️ par Antoine

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

st_circular_kpi-0.1.0.tar.gz (107.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

st_circular_kpi-0.1.0-py3-none-any.whl (105.9 kB view details)

Uploaded Python 3

File details

Details for the file st_circular_kpi-0.1.0.tar.gz.

File metadata

  • Download URL: st_circular_kpi-0.1.0.tar.gz
  • Upload date:
  • Size: 107.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.10

File hashes

Hashes for st_circular_kpi-0.1.0.tar.gz
Algorithm Hash digest
SHA256 737c39ef5badd33acc253b201a6da074ab7b87516c6a7f66884ad5e68acbc4dc
MD5 89f23a04d9c884ff44d1172ee1b5fcf6
BLAKE2b-256 a89bf05e5f3f4cc3d826ef6886ffdfe13d1797b4920d66672f83ae2d3ddb1cae

See more details on using hashes here.

File details

Details for the file st_circular_kpi-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for st_circular_kpi-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8ac2a755f1fd22e1e2da2d2369def1885509eb959fd261f5f267db9da3ae585c
MD5 03e5c49eb591f59a2e838dd9dacaec24
BLAKE2b-256 f3ad673f99be44007582427aac2d4fbbb6fe17a15f9b39d03b20f265cf7396cf

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page