J'ai essayé de résumer comment utiliser matplotlib de python

introduction

Cette fois, je vais résumer comment utiliser matplotlib.

Beaucoup de gens ont résumé comment utiliser matplotlib, donc ce n'est peut-être pas nouveau, mais j'apprécierais que vous puissiez vous entendre avec moi.

L'article précédent résumait comment utiliser numpy et pandas, veuillez donc le vérifier si vous le souhaitez.

J'ai résumé le numpy de python J'ai essayé de résumer comment utiliser les pandas en python

Lors de la rédaction de cet article, les articles suivants ont été très utiles.

Connaissance de base de matplotlib que je voulais connaître tôt, ou l'histoire d'un artiste qui peut ajuster l'apparence

À propos du style de matplotlib

Il existe deux styles de matplotlib.

Une interface Pyplot qui peut être faite avec tout plt. Somehow, et une interface orientée objet qui est écrite avec ʻax.plot après avoir défini fig et ʻax.

Voyons un exemple concret.

Interface Pyplot

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 1, 100)
y = x ** 2
plt.plot(x, y)
plt.show()

Interface orientée objet

x = np.linspace(0, 1, 100)
y = x ** 2
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(x, y)
plt.show()

Lorsque vous utilisez une interface orientée objet, vous devez comprendre la structure hiérarchique suivante. image.png Comme vous pouvez le voir, il existe une structure hiérarchique dans laquelle «l'objet Axes» existe à l'intérieur de «l'objet figure». Autrement dit, le code ci-dessus crée un objet figure avec fig = plt.figure () et un objet axes avec ʻax = fig.add_subplot (111) `.

En tant qu'image, rappelez-vous que l'objet figure est comme une fenêtre de navigateur et que l'objet axes est comme un onglet de navigateur.

Dessinez plusieurs graphiques

Lorsque vous dessinez plusieurs graphiques, procédez comme suit.

x_1 = np.linspace(0, 1, 100)
y_1 = x_1
x_2 = np.linspace(0, 1, 100)
y_2 = x_2 ** 2
x_3 = np.linspace(0, 1, 100)
y_3 = x_3 ** 3
x_4 = np.linspace(0, 1, 100)
y_4 = x_4 ** 4
fig = plt.figure()

ax_1 = fig.add_subplot(221)
ax_2 = fig.add_subplot(222)
ax_3 = fig.add_subplot(223)
ax_4 = fig.add_subplot(224)

ax_1.plot(x_1, y_1)
ax_2.plot(x_2, y_2)
ax_3.plot(x_3, y_3)
ax_4.plot(x_4, y_4)

plt.show()

image.png

Quatre objets axes sont créés dans un objet figure.

L'argument de ʻadd_subplot () est (ligne, colonne, nombre) `, et dans l'exemple ci-dessus, des données de 2 lignes et 2 colonnes sont générées, et les objets axes sont générés dans l'ordre.

Ajuster la taille du graphique

Lors de la création d'un objet figure, vous pouvez ajuster la taille du graphique en passant figsize comme argument.

x = np.linspace(0, 1, 100)
y = x ** 2
fig = plt.figure(figsize=(12, 8))
ax = fig.add_subplot(111)
ax.plot(x, y)
plt.show()

Générer des objets figurine et hache en même temps

Jusqu'à présent, l'objet figure a été créé, puis l'objet hache lui appartenant a été créé, mais vous pouvez créer l'objet figure et l'objet hache en même temps, comme indiqué ci-dessous.

fig, axes = plt.subplots(2, 2, figsize=(20, 12))
plt.show()

image.png

Comme nous n'avons encore rien tracé, nous avons créé une boîte vide comme celle ci-dessus. Jetons un coup d'œil au contenu des données.

print(axes)
print(axes.shape)

image.png

Comme vous pouvez le voir, l'objet axes contient des données 2x2. Chacun correspond aux quatre graphiques ci-dessus.

Vous pouvez le tracer comme suit:

x_1 = np.linspace(0, 1, 100)
y_1 = x_1
x_2 = np.linspace(0, 1, 100)
y_2 = x_2 ** 2
x_3 = np.linspace(0, 1, 100)
y_3 = x_3 ** 3
x_4 = np.linspace(0, 1, 100)
y_4 = x_4 ** 4
fig, axes = plt.subplots(2, 2, figsize=(20, 12))
axes[0][0].plot(x_1, y_1)
axes[0][1].plot(x_2, y_2)
axes[1][0].plot(x_3, y_3)
axes[1][1].plot(x_4, y_4)

plt.show()

image.png

Convertir les axes en un tableau unidimensionnel

Comme les axes sont des données bidimensionnelles, il est difficile de tourner avec une instruction for.

La conversion en un tableau unidimensionnel à l'aide de ravel () facilite la conversion d'une instruction for. Voir l'exemple ci-dessous.

fig, axes = plt.subplots(2, 2, figsize=(20, 12))
one_dimension_axes = axes.ravel()
x = np.linspace(0, 1, 100)
for i, ax in enumerate(one_dimension_axes):
    ax.plot(x, x ** (i+1))

plt.show()

image.png

Tracez plusieurs lignes

Vous pouvez dessiner plusieurs lignes en traçant sur le même objet Axe.

fig = plt.figure(figsize=(12, 8))
ax = fig.add_subplot(111)
x_1 = np.linspace(0, 1, 100)
y_1 = x_1
x_2 = np.linspace(0, 1, 100)
y_2 = x_2 ** 2
ax.plot(x_1, y_1)
ax.plot(x_2, y_2)
plt.show()

Définissez le titre, l'axe et la légende.

fig = plt.figure()
ax = fig.add_subplot(111)
x_1 = np.linspace(0, 1, 100)
y_1 = x_1
x_2 = np.linspace(0, 1, 100)
y_2 = x_2 ** 2
ax.plot(x_1, y_1, label='y=x')
ax.plot(x_2, y_2, label='$y=x^2$')
ax.set_xlabel('x_value')
ax.set_ylabel('y_value')
plt.legend(loc='best')
plt.show()

Vous pouvez également créer une étiquette en utilisant plt.xlabel etc., mais cette fois, j'ai défini l'étiquette en utilisant set_xlabel pour indiquer que l'étiquette appartient à l'objet axes.

L'étiquette est stockée dans l'objet axe sous l'objet axes.

Créons un objet axe et vérifions la variable d'étiquette qu'il contient.

xax = ax.xaxis
yax = ax.yaxis
print(xax.label)
print(yax.label)

Text(0.5, 0, 'x_value') Text(0, 0.5, 'y_value')

Changer la couleur / l'épaisseur / le style de la ligne

Veuillez vous référer à l'article ici pour les couleurs.

fig = plt.figure()
ax = fig.add_subplot(111)
x_1 = np.linspace(0, 1, 100)
y_1 = x_1
x_2 = np.linspace(0, 1, 100)
y_2 = x_2 ** 2
ax.plot(x_1, y_1, label='y=x', color='r', linewidth=2, linestyle='solid')
ax.plot(x_2, y_2, label='$y=x^2$', color='g', linewidth=2, linestyle='dashed')
ax.set_xlabel('x_value')
ax.set_ylabel('y_value')
plt.legend(loc='best')
plt.show()

Vous pouvez changer la couleur et le style en spécifiant l'argument de ʻax.plot` comme décrit ci-dessus.

Comment dessiner un graphique avec deux axes à gauche et à droite

Le premier graphique peut être dessiné de la manière habituelle, et le second graphique peut être dessiné en utilisant une hache générée à l'aide de twinx () pour dessiner un graphique avec un axe x commun et un axe y différent.

fig = plt.figure()
ax_1 = fig.add_subplot(111)
ax_2 = ax_1.twinx()
x = np.linspace(0, 5, 100)
y_1 = x
y_2 = x ** 2
ax_1.plot(x, y_1, label='y=x', color='r', linewidth=2, linestyle='solid')
ax_2.plot(x, y_2, label='$y=x^2$', color='g', linewidth=2, linestyle='dashed')
ax_1.set_xlabel('x_value')
ax_1.set_ylabel('y=x')
ax_2.set_ylabel('$y=x^2$')
fig.legend(loc='lower right')
plt.show()

Nuage de points

Vous pouvez utiliser scatter au lieu de plot pour générer un diagramme de dispersion.

df = pd.DataFrame(data=np.random.randn(200, 2),
                  columns=['A', 'B'])
fig = plt.figure()
ax = fig.add_subplot(111)
ax.scatter(df['A'], df['B'])
plt.show()

Changer la taille, le style et la couleur des points

Ci-dessous le code.

df = pd.DataFrame(data=np.random.randn(200, 2),
                  columns=['A', 'B'])
fig = plt.figure()
ax = fig.add_subplot(111)
ax.scatter(df['A'], df['B'], s=100, c='r', alpha=0.5)
ax.set_xlabel('$x_0$', fontsize=10)
ax.set_ylabel('$x_1$', fontsize=10)
ax.set_title('title')
plt.show()

La taille du point est définie par «s» dans «scatter», la couleur est définie par «c» et la transparence est définie par «alpha».

Changer la taille et la couleur des points en fonction des données

Ci-dessous le code.

df = pd.DataFrame(data=np.random.randn(200, 2),
                  columns=['A', 'B'])
df['data_size'] = np.random.randint(1, 100, 200)
fig = plt.figure()
ax = fig.add_subplot(111)
ax_cmap = ax.scatter(df['A'], df['B'], s=df['data_size']*10, c=df['data_size'], cmap='viridis', alpha=0.5)
fig.colorbar(ax_cmap)
ax.set_xlabel('$x_0$', fontsize=10)
ax.set_ylabel('$x_1$', fontsize=10)
ax.set_title('title')
plt.show()

ʻAx.scatter` c spécifie data_size et cmap spécifie viridis. viridis est une carte de couleurs souvent utilisée dans matplotlib.

Vous pouvez générer la bonne barre de couleurs en passant l'objet mappable qui a créé la palette de couleurs à fig.colorbar.

graphique à barres

Créez un graphique à barres. Ci-dessous le code.

df = pd.DataFrame({'C1': ['A', 'A', 'A', 'B', 'B', 'C'],
                   'C2': [1, 2, 4, 5, 7, 7],
                   'C3': [1, 12, 7, 4, 8, 9]})
fig = plt.figure()
ax = fig.add_subplot(111)
ax.bar(df['C1'].value_counts().index, df.groupby('C1').sum()['C2'])
plt.show()

L'index A, B, C de l'élément C1 est reçu par df ['C1']. Value_counts (). Index.

Par df.groupby ('C1'), nous groupons par élément C1, calculons la somme par sum (), et recevons l'élément C2 dedans.

Créer plusieurs graphiques à barres

Générez plusieurs graphiques comme suit.

df = pd.DataFrame(data=100 * np.random.rand(5, 5), index=['A', 'B', 'C', 'D', 'E'],
                  columns=['C1', 'C2', 'C3', 'C4', 'C5'])

fig = plt.figure(figsize=(12, 8))
ax = fig.add_subplot(111)
x = np.arange(len(df))
bar_width = 0.4
ax.bar(x, df['C1'], color='b', width=bar_width, label='C1')
ax.bar(x + bar_width, df['C2'], color='r', width=bar_width, label='C2')
plt.xticks(x + bar_width/2, df.index, fontsize=20)
plt.legend()
plt.show()

En tant qu'arguments de ʻax.bar`, donnez d'abord la valeur de x, puis la valeur de y, coloriez la couleur de la barre, la largeur de la largeur et étiquetez l'étiquette.

xticks a donné (coordonnées x, nom, taille de la police = taille des caractères) comme arguments.

histogramme

Ci-dessous le code.

df = pd.DataFrame(data=np.random.randn(200), columns=['A'])
fig = plt.figure(figsize=(12, 8))
ax = fig.add_subplot(111)
ax.hist(df['A'], bins=15, rwidth=0.8, color='b')
plt.show()
`rwidth` spécifie la largeur de la barre, qui est 1 par défaut. Quand il est 1, il chevauche la barre horizontale, donc cette fois j'ai spécifié 0.8 pour le rendre plus facile à voir.

bins ajuste le nombre de barres dans l'histogramme.

Carte de chaleur

Ci-dessous le code.

df = pd.DataFrame(data=np.random.rand(5, 5), columns=['A', 'B', 'C', 'D', 'E'])
fig = plt.figure(figsize=(12, 8))
ax = fig.add_subplot(111)
c_ax = ax.pcolor(df, cmap='Blues')
fig.colorbar(c_ax)
plt.show()

Vous pouvez créer une carte thermique en utilisant pcolor.

Vous pouvez ajouter une barre de couleur en passant la valeur de retour après avoir utilisé pcolor à l'argument de fig.colorbar.

À propos du style de graphique

J'ai fait référence à l'article ici.

x = np.linspace(0, 1, 100)
y = x ** 3
plt.rcParams["font.family"] = "arial"      #Définir la police entière
plt.rcParams["xtick.direction"] = "in"               #Vers l'intérieur de la ligne d'échelle de l'axe x
plt.rcParams["ytick.direction"] = "in"               #Ligne d'échelle de l'axe Y vers l'intérieur
plt.rcParams["xtick.minor.visible"] = True           #Ajout de l'échelle auxiliaire sur l'axe x
plt.rcParams["ytick.minor.visible"] = True           #Ajout de l'échelle auxiliaire de l'axe y
plt.rcParams["xtick.major.width"] = 1.5              #Largeur de ligne de la ligne d'échelle principale de l'axe x
plt.rcParams["ytick.major.width"] = 1.5              #Largeur de ligne de la ligne d'échelle principale de l'axe y
plt.rcParams["xtick.minor.width"] = 1.0              #Largeur de ligne de la ligne d'échelle auxiliaire de l'axe x
plt.rcParams["ytick.minor.width"] = 1.0              #Largeur de ligne de la ligne d'échelle auxiliaire de l'axe y
plt.rcParams["xtick.major.size"] = 10                #longueur de la ligne d'échelle principale sur l'axe des x
plt.rcParams["ytick.major.size"] = 10                #Longueur de la ligne d'échelle principale de l'axe y
plt.rcParams["xtick.minor.size"] = 5                 #longueur de la ligne d'échelle auxiliaire sur l'axe des x
plt.rcParams["ytick.minor.size"] = 5                 #longueur de la ligne d'échelle auxiliaire sur l'axe y
plt.rcParams["font.size"] = 14                       #Taille de police
plt.rcParams["axes.linewidth"] = 1.5                 #Épaisseur du boîtier
fig = plt.figure(figsize=(12, 8))
ax = fig.add_subplot(111)
ax.plot(x, y)
ax.set_xlabel('X')
ax.set_ylabel('Y')
fig.savefig('test_5.png', bbox_inches="tight", pad_inches=0.05)  #Enregistrer l'image
plt.show()

Comme indiqué ci-dessus, plt.rcParams vous permet de formater le graphe entier. De plus, fig.savefig ('test_5.png', bbox_inches =" tight ", pad_inches = 0.05) vous permet de sauvegarder l'image avec un bon feeling.

À la fin

C'est tout pour cet article.

Dès que je trouverai d'autres fonctions que j'utilise souvent, je les ajouterai à cet article.

Merci d'être resté avec nous jusqu'à présent.

Recommended Posts

J'ai essayé de résumer comment utiliser matplotlib de python
J'ai essayé de résumer comment utiliser les pandas de python
J'ai essayé de résumer les opérations de chaîne de Python
J'ai essayé de résumer comment utiliser à nouveau le référentiel EPEL
J'ai essayé de résumer la gestion des exceptions Python
[Python] Résumé de l'utilisation des pandas
Entrée standard Python3 que j'ai essayé de résumer
[Python2.7] Résumé de l'utilisation d'unittest
Résumé de l'utilisation de la liste Python
[Python2.7] Résumé de l'utilisation du sous-processus
[Question] Comment utiliser plot_surface de python
Comment utiliser Matplotlib
Comment utiliser Python Kivy (référence) -J'ai traduit le langage Kivy de la référence API-
[Python] Comment utiliser deux types de type ()
Résumé de l'utilisation de MNIST avec Python
python3: Comment utiliser la bouteille (2)
[Python] Comment utiliser la liste 1
Comment utiliser Python Argparse
Python: comment utiliser pydub
[Python] Comment utiliser checkio
J'ai essayé de résumer SparseMatrix
[Python] Comment utiliser input ()
Comment utiliser Python lambda
[Python] Comment utiliser virtualenv
python3: Comment utiliser la bouteille (3)
python3: Comment utiliser la bouteille
Comment utiliser les octets Python
J'ai essayé de résumer la forme de base de GPLVM
Comment utiliser Python Kivy ① ~ Bases du langage Kv ~
[Python] J'ai essayé d'obtenir Json de squid ring 2
Python: comment utiliser async avec
J'ai essayé de toucher Python (installation)
Résumé de l'utilisation de pandas.DataFrame.loc
[Python] Comment utiliser la série Pandas
Comment utiliser les requêtes (bibliothèque Python)
Comment utiliser SQLite en Python
Résumé de l'utilisation de pyenv-virtualenv
[Python] Comment utiliser la liste 3 Ajouté
Comment utiliser Mysql avec python
Comment utiliser l'API Python d'OpenPose
Comment utiliser ChemSpider en Python
Python: Comment utiliser pydub (lecture)
Comment utiliser PubChem avec Python
Comment utiliser la fonction zip de python
Résumé de l'utilisation de csvkit
[Python] Comment utiliser l'API Typetalk
J'ai essayé de trouver l'entropie de l'image avec python
J'ai essayé de simuler la propagation de l'infection avec Python
[python] Comment utiliser Matplotlib, une bibliothèque pour dessiner des graphiques
[Python] Résumé de l'utilisation des fonctions de fractionnement et de jointure
J'ai essayé "Comment obtenir une méthode décorée en Python"
Comparaison de l'utilisation des fonctions d'ordre supérieur dans Python 2 et 3
[Python] J'ai essayé de visualiser la relation de suivi de Twitter
Je ne savais pas comment utiliser l'instruction [python] for
[Apprentissage automatique] J'ai essayé de résumer la théorie d'Adaboost
J'ai essayé d'implémenter le blackjack du jeu Trump en Python
Les débutants en Python ont créé un chat BOT alors j'ai essayé de résumer comment le faire
Le 15e temps réel hors ligne, j'ai essayé de résoudre le problème de l'écriture avec python
L'arbre.plot_tree de scikit-learn était très simple et pratique, j'ai donc essayé de résumer comment l'utiliser facilement.
J'ai essayé d'implémenter PLSA en Python