[PYTHON] histogramme avec matplotlib

J'ai fait un histogramme à partir des enregistrements de 5 sujets et du total des points de l'examen simulé avec matplotlib. ・ Matplotlib ・ Histogramme (plt.hist) ・ Sortie graphique avec instruction for -Codage couleur pour les barres de l'histogramme avec des patchs

Histogramme de test pratique

・ Les cibles sont la langue nationale, les mathématiques, l'anglais, la société, la science, le score total.

・ 100 points pour chacun des éléments japonais, mathématiques, anglais, société et sciences

・ Csv https://drive.google.com/file/d/1EzctLYN5-UvkmkOgZ7usPgtsQn7bdq5y/view?usp=sharing

・ Le score total est de 500 points. 20200916000204.png


Chargez la bibliothèque


import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

Créez un bloc de données. Donnez le nom dans la 1ère à la 6ème colonne. (Si csv est dans le même répertoire que .ipynb de python, vous pouvez utiliser "~~~ .csv".)

df = pd.read_csv("honmachi.csv", names=['langue nationale','Math','Anglais','société','Science','total'])

Vérifiez l'état du stockage. (Vous pouvez maintenant voir la première ligne.)

df.head()

20200916000914.png

Je n'analyserai pas cette fois, mais describe () vous donnera une vue d'ensemble.

df.describe()

20200916001311.png

Demandez à ** matplotlib ** d'écrire un histogramme de df ['langue nationale'] par défaut.

plt.hist(df['langue nationale'])
plt.title('langue nationale')
plt.xlabel('But')
plt.ylabel('Nombre de personnes')
plt.show()

20200916002301.png

La valeur par défaut est subtile. En raison de la nature des résultats des tests ・ Plage de 0 à 100 points ** plage = (0, 100) ** ・ 10 bâtonnets ** bacs = 10 ** Est-ce facile à voir?

Donc, rangez la plage et les bacs entre () de hist dans ** matplotlib **.

# hist()Ajouter à
plt.hist(df['langue nationale'], range=(0,100), bins=10,)
plt.title('langue nationale')
plt.xlabel('But')
plt.ylabel('Nombre de personnes')
plt.show()

20200916003812.png

Vient ensuite l'axe. ・ Axe X Puisqu'il est compris entre 0 et 100, ** plt.xlim (0, 100) ** ・ Axe Y Il est difficile de comparer avec la hauteur fluctuant selon le sujet. Cette fois, c'est pour 15 personnes, donc pour le moment, 8 personnes seront ** plt.ylim (0,8) **. Si vous spécifiez ici, vous pouvez ajuster ici même si vous dépassez 8 personnes.

plt.hist(df['langue nationale'], range=(0,100), bins=10,)
#Ajouter ici
plt.xlim(0,100)
plt.ylim(0,8)
plt.title('langue nationale')
plt.xlabel('But')
plt.ylabel('Nombre de personnes')
plt.show()

20200916005618.png

Le prototype ressemble à ceci.


Ajustez un design un peu plus fin. ** 1. Je veux une ligne de quadrillage pour lire l'échelle ** ** 2. Essayez de changer la couleur avec moins de la moitié du score **


  1. Tracez une ligne horizontale sur le nombre de personnes. plt.grid(True)
plt.hist(df['langue nationale'], range=(0,100), bins=10)
plt.xlim(0,100)
plt.ylim(0,8)
#ajouter à
plt.grid(True)
plt.title('langue nationale')
plt.xlabel('But')
plt.ylabel('Nombre de personnes')
plt.show()

20200916011819.png

** 2. Changez la couleur avec moins de la moitié du score. ** ** J'ai eu du mal. Dans plt.hist () si (49 points ou moins):   range=(0,50), bins=5 autre (50 points ou plus):   range=(51,100), bins=5 Même si je pense au code couleur, cela semble difficile.

Est-il possible de re-diviser chaque sujet dans la trame de données en 50 points ou moins et 50 points ou plus à chaque fois?

Cependant, en raison de la nature de cette période, une tige bien fixée se développera, alors puis-je ** coder en couleur la tige **? En d'autres termes, je veux rendre la 1ère à la 5ème barre rouge pour les ** barres. ** ** Ici, j'ai utilisé la valeur de retour dans hist.

Référence n, bins, patches = hist(○○)
n: données de valeur de l'axe Y bacs: données de valeur de l'axe X patchs: liste des patchs (Patch = ** Objets pour chaque barre de l'histogramme **)

Je veux coder en couleur le 1er au 5 de ce ** patch **

#Mettre le rouge en couleur pour le premier patch (barre)
patches[0].set_facecolor('red')

J'ai utilisé la déclaration for parce que je peux répéter cela du 1er au 5ème.

for i in range(0, 5):
    patches[i].set_facecolor('red')

Maintenant que le codage couleur est prêt, ajoutez ceci pour la déclaration.

plt.hist(df['langue nationale'], range=(0,100), bins=10)
plt.xlim(0,100)
plt.ylim(0,8)
plt.grid(True)
plt.title('langue nationale')
plt.xlabel('But')
plt.ylabel('Nombre de personnes')
#Postscript
for i in range(0, 5):
    patches[i].set_facecolor('red')
plt.show()

20200916020839.png

Il apparaîtra si les patchs ne sont pas définis. Dois-je mettre des ** chemins ** quelque part? Emprunter le précédent ** n, bins, patches = hist () ** et cela a fonctionné.

#Ajouter ici
n, bins, patches = plt.hist(df['langue nationale'], range=(0,100), bins=10)
plt.xlim(0,100)
plt.ylim(0,8)
plt.grid(True)
plt.title('langue nationale')
plt.xlabel('But')
plt.ylabel('Nombre de personnes')
for i in range(0, 5):
    patches[i].set_facecolor('red')
plt.show()

20200916021239.png

Achevée.

Le rouge sanglant est également malchanceux, alors ajustez la transparence (alpha). ** alpha = 0,5 ** Ceci est en outre ordonné dans hist ().

# hist()Alpha est également ajouté dans
n, bins, patches = plt.hist(df['langue nationale'], range=(0,100), bins=10, alpha=0.5)
plt.xlim(0,100)
plt.ylim(0,8)
plt.grid(True)
plt.title('langue nationale')
plt.xlabel('But')
plt.ylabel('Nombre de personnes')
for i in range(0, 5):
    patches[i].set_facecolor('red')
plt.show()

20200916022138.png


Après cela, utilisez l'instruction for pour tout activer en même temps.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv("honmachi.csv", names=['langue nationale','Math','Anglais','société','Science','total'])
#Définissez une variable appelée sujet et traitez un sujet à la fois.
for subject in ['langue nationale','Math','Anglais','société','Science']:
# df[ ]Le contenu est modifié en fonction du sujet.
    n, bins, patches = plt.hist(df[subject], range=(0,100), bins=10, alpha=0.5)
    plt.xlim(0,100)
    plt.ylim(0,8)
    plt.grid(True)
#title( )Si le contenu est également sujet, l'étiquette du titre changera automatiquement.
    plt.title(subject)
    plt.xlabel('But')
    plt.ylabel('Nombre de personnes')
    for i in range(0, 5):
        patches[i].set_facecolor('red')
    plt.show()

20200916024212.png

Avec cela, 5 feuilles sont sorties à la fois.

Le reste est le score total. Donnez-lui simplement un score parfait de 500. Récupérez le total des trames de données ・ ** plage = (0,500) ** ・ ** plt.xlim (0,500) ** Changez pour et vous avez terminé.

Enfin, je vais rassembler le code utilisé dans cette exigence sans commentaire.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv("honmachi.csv", names=['langue nationale','Math','Anglais','société','Science','total'])

for subject in ['langue nationale','Math','Anglais','société','Science']:
    n, bins, patches = plt.hist(df[subject], range=(0,100), bins=10, alpha=0.5)
    plt.xlim(0,100)
    plt.ylim(0,8)
    plt.grid(True)
    plt.title(subject)
    plt.xlabel('But')
    plt.ylabel('Nombre de personnes')
    for i in range(0, 5):
        patches[i].set_facecolor('red')
    plt.show()

n, bins, patches = plt.hist(df['total'], range=(0,500), bins=10, alpha=0.5)
plt.xlim(0,500)
plt.ylim(0,8)
plt.grid(True)
plt.title('total')
plt.xlabel('But')
plt.ylabel('Nombre de personnes')
for i in range(0, 5):
    patches[i].set_facecolor('red')
plt.show()

Si vous venez de sortir de python, cela ne semble pas poser de problème, mais si vous voulez l'utiliser de manière réaliste, je pense que cela ne peut pas être un mécanisme de mise en œuvre final qui fonctionne sur le réseau pour le rendre universel. J'ai fait.

Recommended Posts

histogramme avec matplotlib
Animation avec matplotlib
Japonais avec matplotlib
Animation avec matplotlib
Faire une animation avec matplotlib
Écrire un histogramme empilé avec matplotlib
Graphique 2 axes avec Matplotlib
Carte thermique par Python + matplotlib
Graphique de bande avec matplotlib
Apprenez avec Chemo Informatics Matplotlib
Dessin en temps réel avec matplotlib
Différentes barres de couleurs avec Matplotlib
Graphique 3D avec matplotlib
Ajustez les axes avec matplotlib
Les bases de Pandas pour les débutants ③ Créez un histogramme avec matplotlib
Graphique des données Excel avec matplotlib (1)
Essayez d'utiliser matplotlib avec PyCharm
Méthode de dessin graphique avec matplotlib
Graphique des données Excel avec matplotlib (2)
Superposition transparente de l'histogramme par Matplotlib
Bar plot empilable avec matplotlib
[Python] Comment créer un histogramme bidimensionnel avec Matplotlib
Extrait des paramètres de l'histogramme matplotlib
Sélectionnez les couleurs en dégradé avec matplotlib
Animer plusieurs graphiques avec matplotlib
Affichage des inférences et des résultats avec Tensorflow + matplotlib
Japaneseize Matplotlib avec Alpine en utilisant Docker
Ajouter le ratio cumulatif à l'histogramme matplotlib
Dessinez le japonais avec matplotlib sur Ubuntu
Dessinez un graphique lâche avec matplotlib
Heatmap avec dendrogramme en Python + matplotlib
Réglage facile de la police japonaise avec matplotlib
Afficher la ligne de division dans l'histogramme matplotlib
Dessinez facilement des graphiques avec matplotlib
Couleur en continu avec le diagramme de dispersion matplotlib
Dessinez Riapnov Fractal avec Python, matplotlib
Quand matplotlib ne fonctionne pas avec python2.7
Effectuer un tracé de probabilité normale logarithmique avec Python, matplotlib
Animation facile avec matplotlib (mp4, gif)
Implémentez "Data Visualization Design # 2" avec matplotlib
Mémorandum Matplotlib
[Python] Définissez la plage du graphique avec matplotlib
Ajustez l'espacement entre les chiffres avec Matplotlib
Alignez la taille de la barre de couleurs avec matplotlib
Ajustez la largeur du bac de manière nette et précise avec l'histogramme de matplotlib et seaborn
Galerie Matplotlib
Essayez de dessiner une distribution normale avec matplotlib
Mémo Matplotlib
Ecrire des graphiques SVG avec matplotlib avec heroku
Afficher le graphique japonais avec VS Code + matplotlib
Carte thermique pour la recherche de grille avec Matplotlib
Dessinez une étiquette d'axe hiérarchique avec matplotlib + pandas
[Python] Rendons matplotlib compatible avec le japonais
Graphiques de fonctions triangulaires avec numpy et matplotlib
Résumé matplotlib
Afficher les marqueurs au-dessus de la bordure avec matplotlib
Alignez la barre de couleurs sur la figure avec matplotlib
[Mémo Jupyter Notebook] Afficher les kanji avec matplotlib
Dessinez un joli graphique circulaire avec matplotlib
Définissez les paramètres communs avec le sous-graphique de matplotlib