Python >> Tutoriel Python >  >> Python Tag >> Matplotlib

Dessin Python :Introduction à Python Matplotlib pour la visualisation de données (Partie 2)

Vous êtes-vous déjà demandé comment utiliser Python pour créer de superbes visualisations de données ?

Dans la première partie de cette série, nous avons vu comment dessiner des tracés linéaires et des histogrammes en utilisant la bibliothèque matplotlib. Nous avons également vu comment modifier la taille par défaut d'un tracé et comment ajouter des titres , axes , et légendes à un complot.

Dans cet article, nous verrons quelques autres types de tracés qui peuvent être dessinés à l'aide de la bibliothèque matplot avec des conseils professionnels sur la façon de les améliorer. Nous couvrirons les parcelles suivantes :

  • Tracés à barres
  • Nuage de points
  • Stack plots
  • Graphes circulaires

Pour rappel, nous utiliserons l'alias de plt pour le module matplotlib dans notre code. Ainsi, tous les appels de fonction matplotlib seront précédés de plt .

Plongeons-nous !

Tracés à barres

Un diagramme à barres utilise simplement une barre pour représenter la valeur y pour une valeur x particulière . Par exemple, vous pouvez utiliser un graphique à barres pour représenter les cours des actions au cours des dix dernières années. Pour ce faire, vous devez utiliser la fonction barre . Le premier argument de cette fonction est la liste des valeurs pour l'axe des x, et le second argument est la liste des valeurs correspondantes pour l'axe des y. Il est important de mentionner que le nombre de points dans les listes x et y doit être égal .

Considérez le script suivant :

stock_prices = [23,21,43,32,45,34,56,23,67,89]
years = [2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018] 

plt.bar(years, stock_prices)
plt.show()

La sortie ressemble à ceci :

Vous pouvez changer la couleur des barres en passant une valeur au color paramètre de la barre fonction, comme indiqué ci-dessous :

stock_prices = [23,21,43,32,45,34,56,23,67,89]
years = [2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018] 

plt.bar(years, stock_prices, color = "deepskyblue", edgecolor = "rebeccapurple")
plt.show()

Dans le script ci-dessus, la valeur de l'attribut color est définie sur deepskyblue . La sortie du script ci-dessus ressemble à ceci :

Conseil de pro :comment créer des graphiques à barres horizontales

En plus des graphiques à barres verticales, vous pouvez également dessiner des graphiques à barres horizontales . Pour cela, il suffit de passer en horizontal comme valeur du paramètre d'orientation de la fonction barre. Regardez le script suivant :

stock_prices = [23,21,43,32,45,34,56,23,67,89]
years = [2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018] 

plt.barh(years, stock_prices, orientation = "horizontal", color = "deepskyblue", edgecolor = "rebeccapurple")
plt.show()

Dans la sortie, vous verrez un diagramme à barres horizontales comme indiqué ci-dessous :

Nuage de points

Les nuages ​​de points sont similaires aux tracés linéaires, mais ils n'utilisent pas de courbes pour montrer une relation entre les valeurs des axes x et y. Au lieu de cela, vous tracez simplement chaque paire de valeurs x et y . Pour créer un nuage de points, il vous suffit d'utiliser le scatter fonction. Les valeurs des axes x et y sont respectivement transmises en tant que premier et deuxième arguments de cette fonction.

Regardez le script suivant :

stock_prices = [23,21,43,32,45,34,56,23,67,89,23,21,43,32,45,34,56,23,67,89,23,21,43,32,45,34,56,23,67,89]
credit_ratings = [2,3,5,2,5,3,5,2,6,8,2,3,5,2,5,3,5,2,6,8,2,3,5, 2,5,3,5,2,6,8] 

plt.scatter(credit_ratings, stock_prices)
plt.show()

La sortie du script ci-dessus ressemble à ceci :

Par défaut, les cercles bleus sont utilisés pour les nuages ​​de points, mais vous pouvez modifier la forme et la couleur. La forme à dessiner est spécifiée par le paramètre marqueur. De même, la couleur du tracé est transmise au color paramètre. Regardez le script suivant :

stock_prices = [23,21,43,32,45,34,56,23,67,89,23,21,43,32,45,34,56,23,67,89,23,21,43,32,45,34,56,23,67,89]
credit_ratings = [2,3,5,2,5,3,5,2,6,8,2,3,5,2,5,3,5,2,6,8,2,3,5, 2,5,3,5,2,6,8] 

plt.scatter(credit_ratings, stock_prices, marker = "x", color = "#5d3087")
plt.show()

Ici, 'x ' est transmis comme marqueur, tandis que le code hexadécimal #5d3087 est transmis comme couleur. Alternativement, vous pouvez passer le nom de la couleur au lieu de sa valeur hexadécimale. La sortie du script ci-dessus ressemble à ceci :

Conseil de pro :comment modifier la taille du marqueur pour les nuages ​​de points

Vous pouvez modifier la taille par défaut du marqueur sur un nuage de points en transmettant une valeur pour le s paramètre . La valeur par défaut est 20. Regardez le script suivant :

stock_prices = [23,21,43,32,45,34,56,23,67,89,23,21,43,32,45,34,56,23,67,89,23,21,43,32,45,34,56,23,67,89]
credit_ratings = [2,3,5,2,5,3,5,2,6,8,2,3,5,2,5,3,5,2,6,8,2,3,5, 2,5,3,5,2,6,8] 

plt.scatter(credit_ratings, stock_prices, marker = "o", color = "deepskyblue", edgecolors = "rebeccapurple", s = 400)
plt.show()

La sortie ressemble à ceci :

Bien sûr, comme vous pouvez probablement le constater, ces marqueurs sont assez grands et il est un peu difficile de dire à quelles valeurs ils correspondent sur les axes x et y. Il s'agissait plutôt d'un exercice illustratif. Lorsque vous créez vos propres nuages ​​de points, veillez à sélectionner une taille de marqueur raisonnable qui équilibre visibilité et clarté.

Plots empilés

Les diagrammes de pile sont utilisés lorsque vous avez des données de plusieurs catégories pour chaque point de données de l'axe des x . Par exemple, vous pouvez utiliser le diagramme de pile pour tracer les cours des actions de trois sociétés au cours des huit dernières années. Les données des entreprises seront empilées les unes sur les autres pour faciliter leur comparaison.

Pour dessiner un diagramme en pile, vous devez utiliser le stackplot fonction du plt modules . Le premier argument est la liste des données à tracer sur l'axe des x, tandis que le reste des arguments sont les données de chaque catégorie que vous voulez dans votre diagramme de pile. Vous pouvez également spécifier la couleur pour chaque pile en utilisant le color attribut.

year = [2014, 2015, 2016, 2017, 2018]

company1 = [78,57,68,97,51]  
company2 = [85,65,74,105,62]  
company3 = [65,42,56,90,45]

plt.plot([],[], color = "#93c149", label = "company1")  
plt.plot([],[], color = "#25b6ea", label = "company2")  
plt.plot([],[], color = "#5d3087", label = "company3")

plt.stackplot(year,company1,company2,company3,colors = ["#25b6ea","#93c149","#5d3087"])  

plt.legend()  
plt.title("Average Stock Prices for the three companies")  
plt.xlabel("year")  
plt.ylabel("Stock Prices")  
plt.show()

La sortie du script ci-dessus ressemble à ceci :

Conseil de pro :comment créer des tracés de pile symétriques

Vous pouvez également créer des diagrammes de pile symétriques en passant 'sym' comme valeur du paramètre de ligne de base , comme indiqué ci-dessous :

year = [2014, 2015, 2016, 2017, 2018]

company1 = [78,57,68,97,51]  
company2 = [85,65,74,105,62]  
company3 = [65,42,56,90,45]

plt.plot([],[], color = "#93c149", label = "company1")  
plt.plot([],[], color = "#25b6ea", label = "company2")  
plt.plot([],[], color = "#5d3087", label = "company3")

plt.stackplot(year, company1, company2, company3, colors = ["#25b6ea","#93c149","#5d3087"] , baseline = "sym")  

 
plt.legend()  
plt.title("Average Stock Prices for the three companies")  
plt.xlabel("year")  
plt.ylabel("Stock Prices")  
plt.show()

Dans la sortie, vous verrez un tracé de pile symétrique :

Graphiques circulaires

Les diagrammes à secteurs se présentent sous la forme d'un cercle, où chaque tranche représente la partie des données qui appartient à cette catégorie spécifique. Pour dessiner un camembert, vous devez appeler le pie fonction du plt modules . Le premier argument est la liste des données. Il faut ensuite passer la liste des noms de catégories au labels paramètre. Si le shadow le paramètre est défini sur True , une ombre fine apparaît près des bords du graphique. Enfin, le explode Le paramètre peut être utilisé pour ajouter de l'espace entre les différentes tranches du diagramme circulaire.

Il est important de mentionner que vous n'avez pas à spécifier le pourcentage exact que chaque catégorie occupera sur la parcelle. Au lieu de cela, vous devez simplement spécifier la valeur de chaque catégorie ; le diagramme circulaire les convertira automatiquement en pourcentages. Le script suivant crée un graphique à secteurs pour les dépenses budgétaires imaginaires d'un pays pendant un an :

sectors = "Health", "Defence", "Education', "Tourism"

amount = [40,75,35,15]  
colors = ["#93c149","#25b6ea","#5d3087","#d15197"]

plt.pie(amount, labels = sectors, colors = colors ,shadow = True, explode = (0.025, 0.025, 0.025, 0.025), autopct = "%1.1f%%")  
plt.axis("equal")

plt.show()

La sortie du script ressemble à ceci :

Augmentons le explode valeur pour la première catégorie et voir quels résultats nous obtenons. Nous allons le définir sur 0,5 :

sectors = "Health", "Defence", "Education", "Tourism"

amount = [40,75,35,15]  
colors = ["#93c149","#25b6ea","#5d3087","#d15197"]

plt.pie(amount, labels = sectors, colors=colors ,shadow = True, explode = (0.5, 0.025, 0.025, 0.025), autopct = "%1.1f%%")  
plt.axis("equal")

plt.show()  

Dans le résultat, vous verrez une distance accrue entre Santé et les autres catégories, comme indiqué ci-dessous :

Conseil de pro :Modifier les angles par rapport à la ligne de base

Par défaut, les tranches d'un graphique à secteurs sont disposées de telle sorte que la catégorie avec la plus grande part du graphique apparaisse dans le coin supérieur gauche et les autres à des emplacements aléatoires. Cependant, vous pouvez modifier ce comportement.

Par exemple, si vous souhaitez que votre première catégorie ait un angle de 90 degrés par rapport à la ligne de base (une ligne horizontale imaginaire passant par le centre du secteur), vous pouvez passer 90 comme valeur pour le startangle paramètre de la fonction pie, comme indiqué ci-dessous :

sectors = "Health", "Defence", "Education", "Tourism"

amount = [40,75,35,15]  
colors = ["#93c149","#25b6ea","#5d3087","#d15197"]

plt.pie(amount, labels = sectors, colors = colors ,shadow = True, explode = (0.025, 0.025, 0.025, 0.025), autopct = "%1.1f%%", startangle = 90)  
plt.axis('equal')

plt.show()  

Dans la sortie, vous verrez que la catégorie nommée Santé a maintenant un angle de 90 degrés par rapport à la ligne de base :

Conclusion

C'est à peu près tout !

Dans cet article, vous avez appris à dessiner des diagrammes à barres, des graphiques à barres, des diagrammes de dispersion et des diagrammes à secteurs. La bibliothèque matplotlib est indispensable pour quiconque souhaite apprendre à tracer et visualiser des données.

Vous voulez en savoir plus sur la visualisation de données avec matplotlib ? N'oubliez pas de consulter notre cours d'introduction à Python pour la science des données. C'est une excellente ressource pour les utilisateurs Python débutants et intermédiaires qui souhaitent en savoir plus sur la science des données et la visualisation des données en Python.