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.
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.
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 1, 100)
y = x ** 2
plt.plot(x, y)
plt.show()
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.
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.
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()
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.
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()
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()
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)
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()
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()
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')
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.
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()
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()
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».
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
.
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.
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.
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.
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
.
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.
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