Présenté le donnée d'une base sqlite dans un graphique avec python
Résolu
rasielblas
Messages postés
135
Date d'inscription
Statut
Membre
Dernière intervention
-
rasielblas Messages postés 135 Date d'inscription Statut Membre Dernière intervention -
rasielblas Messages postés 135 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai une base de donnée sqlite qui contient des données et je veux présenté le nombre d'enregistrement dans un graphique avec matptolib.
Ce que je souhaite c'est quelque chose du genre:

Voici mon code:
J'ai essayé avec ce code mais je ne sais pas comment le combiner pour que le code pour qu'il soit mise à jour dynamiquement:
J'aimerais solliciter votre aide si vous pouvez m'aider comment combiner ces deux codes ou si vous avez d'autre suggestion. J'espère que vous avez compris mon problème, merci de votre collaboration.
J'ai une base de donnée sqlite qui contient des données et je veux présenté le nombre d'enregistrement dans un graphique avec matptolib.
Ce que je souhaite c'est quelque chose du genre:

Voici mon code:
import sqlite3 import matplotlib.pyplot as plt connection=sqlite3.connect("basedonnee.db") curseur=connection.cursor() curseur.execute("create table if not exists faute(id integer,matricule string(25))") curseur.execute("insert into faute(id,matricule) values(1,'Jean')") curseur.execute("insert into faute(id,matricule) values(1,'Jean')") curseur.execute("insert into faute(id,matricule) values(1,'Jean')") curseur.execute("insert into faute(id,matricule) values(1,'Jean')") curseur.execute("insert into faute(id,matricule) values(1,'Jean')") curseur.execute("insert into faute(id,matricule) values(2,'Marc')") curseur.execute("insert into faute(id,matricule) values(2,'Marc')") curseur.execute("insert into faute(id,matricule) values(2,'Marc')") curseur.execute("insert into faute(id,matricule) values(2,'Marc')") curseur.execute("insert into faute(id,matricule) values(2,'Marc')") curseur.execute("insert into faute(id,matricule) values(2,'Marc')") curseur.execute("insert into faute(id,matricule) values(2,'Marc')") curseur.execute("insert into faute(id,matricule) values(3,'Luc')") curseur.execute("insert into faute(id,matricule) values(3,'Luc')") curseur.execute("insert into faute(id,matricule) values(3,'Luc')") curseur.execute("insert into faute(id,matricule) values(3,'Luc')") curseur.execute("insert into faute(id,matricule) values(4,'Joe')") curseur.execute("insert into faute(id,matricule) values(4,'Joe')") curseur.execute("insert into faute(id,matricule) values(4,'Joe')") curseur.execute("select * from faute") print(curseur.fetchall()) connection.commit() connection.close()
J'ai essayé avec ce code mais je ne sais pas comment le combiner pour que le code pour qu'il soit mise à jour dynamiquement:
import matplotlib.pyplot as plt labels = ['Jean', 'Marc', 'Luc', 'Joe'] quantity = [5,7,4,3] colors = ['yellowgreen', 'gold', 'lightskyblue', 'lightcoral'] plt.pie(quantity, labels=labels, colors=colors, autopct='%1.1f%%', shadow=True, startangle=100) plt.axis('equal') plt.show()
J'aimerais solliciter votre aide si vous pouvez m'aider comment combiner ces deux codes ou si vous avez d'autre suggestion. J'espère que vous avez compris mon problème, merci de votre collaboration.
Configuration: Windows / Firefox 72.0
A voir également:
- Présenté le donnée d'une base sqlite dans un graphique avec python
- Changer carte graphique - Guide
- Base de registre - Guide
- Citizen code python avis - Accueil - Outils
- Comment faire un graphique sur excel - Guide
- Graphique sparkline - Guide
2 réponses
Bonjour,
Je trouve bizarre d'insérer les mêmes lignes x fois dans ta table, alors que pour faire ça, tu devrais avoir 2 tables.
En outrepassant cette mauvaise architecture de ta base, il suffit simplement de compter le nombre de lignes pour chaque matricule (ou id).
Un autre problème se posera, si la taille de colors n'est pas au moins égal à la taille de labels, il y aura doublons de couleur.
Je trouve bizarre d'insérer les mêmes lignes x fois dans ta table, alors que pour faire ça, tu devrais avoir 2 tables.
En outrepassant cette mauvaise architecture de ta base, il suffit simplement de compter le nombre de lignes pour chaque matricule (ou id).
import sqlite3 import matplotlib.pyplot as plt labels = [] quantity = [] with sqlite3.connect("basedonnee.db") as con: cur = con.cursor() cur.execute("select matricule, count(*) from faute group by(id)") for matricule, nb in cur.fetchall(): labels.append(matricule) quantity.append(nb) colors = ['yellowgreen', 'gold', 'lightskyblue', 'lightcoral'] plt.pie(quantity, labels=labels, colors=colors, autopct='%1.1f%%', shadow=True, startangle=100) plt.axis('equal') plt.show()
Un autre problème se posera, si la taille de colors n'est pas au moins égal à la taille de labels, il y aura doublons de couleur.
Je me suis documenté un peu est cela m'oriente vers une autre bibliothèque comme plotnine!
voici le code que j'ai trouvé sur un certain site:
https://blog.algorexhealth.com/2018/03/almost-10-pie-charts-in-10-python-libraries/
J'aimerais avoir si matplotlib n'est pas capable de faire ce schéma pour ne pas compliqué le chose sinon comment procéder. Encore merci !
Je crois qu'il manque le plt.pie mais je ne sais pas comment fait-on pour avoir l'équivalence avec ce nouveau graphe plt.barh.
Je pense que c'est simplement les graduations de l’abscisse qui ne sont pas bonnes, mais ne connaissant pas matplotlib du tout, je ne sais comment cela se fait, il faudrait regarder dans les exemples exposés dans la doc matplotlib.
https://matplotlib.org/tutorials/introductory/lifecycle.html#sphx-glr-tutorials-introductory-lifecycle-py
Alors il est simple d'adapter à ton code
Mais ce n'est peut-être pas ce que tu souhaites obtenir.