Fonctions de tracé de données 2D et statistiques de Matplotlib


Matplotlib 参考文档Documentation de référence de Matplotlib

Fonctions pour afficher des données 2D et visualiser des distributions statistiques.

Aperçu des fonctions

FonctionDescription
hist2d()Histogramme 2D
hexbin()Diagramme de regroupement hexagonal (Hexbin)
stairs()Histogramme en escalier (alternative au mode step de hist)
matshow()Afficher une matrice dans une nouvelle Figure
pcolor()Tracé de pseudocouleur (PolyCollection)
pcolormesh()Tracé de pseudocouleur (QuadMesh, meilleures performances)
spy()Motif des éléments non nuls d'une matrice creuse
figimage()Placer une image au niveau de la Figure
ecdf()Fonction de répartition empirique
violinplot()Diagramme en violon

hist2d() - Histogramme 2D

matplotlib.pyplot.hist2d(x, y, bins=10, range=None, density=False,
    weights=None, cmin=None, cmax=None, *, **kwargs)

Exemple

import matplotlib.pyplot as plt
import numpy as np

np.random.seed(42)
x = np.random.randn(5000)
y = x * 0.5 + np.random.randn(5000) * 0.5

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 5),
                                layout='constrained')

# Histogramme 2D
h, xedges, yedges, im = ax1.hist2d(x, y, bins=40, cmap='Blues')
fig.colorbar(im, ax=ax1, label='Count')
ax1.set_title('hist2d()')
ax1.set_xlabel('X')
ax1.set_ylabel('Y')

# Binning hexagonal
hb = ax2.hexbin(x, y, gridsize=30, cmap='YlOrRd')
fig.colorbar(hb, ax=ax2, label='Count')
ax2.set_title('hexbin()')
ax2.set_xlabel('X')
ax2.set_ylabel('Y')

plt.show()

stairs() - Histogramme en escalier

matplotlib.pyplot.stairs(values, edges=None, *, orientation='vertical',
    baseline=0, fill=False, **kwargs)

Exemple

import matplotlib.pyplot as plt
import numpy as np

np.random.seed(42)
data = np.random.randn(500)

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 4),
                                layout='constrained')

# comparaison hist + stairs
counts, bins = np.histogram(data, bins=30)
ax1.hist(data, bins=30, alpha=0.3, color='steelblue')
ax1.stairs(counts, bins, fill=False, color='red',
           linewidth=2, label='contour d'escalier')
ax1.set_title('contour de stairs() sur hist()')
ax1.legend()

# stairs avec fill=True
ax2.stairs(counts, bins, fill=True, color='coral',
           alpha=0.7, edgecolor='black', linewidth=1)
ax2.set_title('stairs() avec fill=True')

plt.show()

pcolormesh() - Tracé de pseudocouleur

matplotlib.pyplot.pcolormesh(*args, alpha=None, norm=None,
    cmap=None, vmin=None, vmax=None, shading=None, **kwargs)

Exemple

import matplotlib.pyplot as plt
import numpy as np

# Créer des données 2D
x = np.linspace(0, 5, 50)
y = np.linspace(0, 5, 50)
X, Y = np.meshgrid(x, y)
Z = np.sin(X) * np.cos(Y)

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 5),
                                layout='constrained')

# pcolormesh - shading='flat' par défaut (supprime la dernière ligne/colonne)
pc1 = ax1.pcolormesh(X, Y, Z, cmap='RdYlBu',
                      shading='auto')
fig.colorbar(pc1, ax=ax1, label='Valeur')
ax1.set_title('pcolormesh()')
ax1.set_xlabel('X')
ax1.set_ylabel('Y')

# pcolor - rendu comme PolyCollection
pc2 = ax2.pcolor(X, Y, Z, cmap='RdYlBu')
fig.colorbar(pc2, ax=ax2, label='Valeur')
ax2.set_title('pcolor()')
ax2.set_xlabel('X')
ax2.set_ylabel('Y')

plt.show()

spy() - Motif de matrice creuse

matplotlib.pyplot.spy(Z, precision=0, marker=None, markersize=None,
    aspect='equal', origin='upper', **kwargs)

Exemple

import matplotlib.pyplot as plt
import numpy as np
from scipy import sparse

# Créer une matrice creuse
np.random.seed(42)
dense = np.random.rand(50, 50)
dense[dense < 0.9] = 0      # 90% sont nuls
sparse_mat = sparse.csr_matrix(dense)

fig, ax = plt.subplots(figsize=(5, 5), layout='constrained')

ax.spy(sparse_mat, markersize=5, color='steelblue')
ax.set_title('spy() - Motif de matrice creuse')
plt.show()

matshow() / figimage()

matplotlib.pyplot.matshow(A, fignum=None, **kwargs)
matplotlib.pyplot.figimage(X, xo=0, yo=0, alpha=None, norm=None,
    cmap=None, vmin=None, vmax=None, origin=None, **kwargs)

Exemple

import matplotlib.pyplot as plt
import numpy as np

# matshow - crée automatiquement une nouvelle Figure pour afficher la matrice
matrix = np.random.rand(8, 8)
plt.matshow(matrix, cmap='viridis')
plt.title('matshow()')
plt.colorbar(label='Valeur')
plt.show()
print("exemple : matshow affiché")

ecdf() - Distribution cumulative empirique

matplotlib.pyplot.ecdf(x, *, ax=None, complementary=False,
    **kwargs)

Exemple

import matplotlib.pyplot as plt
import numpy as np

np.random.seed(42)
data1 = np.random.normal(0, 1, 200)
data2 = np.random.normal(2, 0.5, 200)

fig, ax = plt.subplots(figsize=(7, 5), layout='constrained')

ax.ecdf(data1, label='N(0, 1)')
ax.ecdf(data2, label='N(2, 0.5)')

ax.set_title('ecdf() - CDF empirique')
ax.set_xlabel('Valeur')
ax.set_ylabel('Probabilité cumulative')
ax.legend()
ax.grid(True, alpha=0.3)
plt.show()

violinplot() - Diagramme en violon

matplotlib.pyplot.violinplot(dataset, positions=None, vert=True,
    widths=0.5, showmeans=False, showmedians=False,
    showextrema=True, **kwargs)

Exemple

import matplotlib.pyplot as plt
import numpy as np

np.random.seed(42)
data = [
    np.random.normal(0, 1, 200),
    np.random.normal(2, 1.5, 200),
    np.random.gamma(2, 1, 200),
]

fig, ax = plt.subplots(figsize=(7, 5), layout='constrained')

vp = ax.violinplot(data, showmeans=True, showmedians=True)

# Couleurs personnalisées
colors = ['#3498db', '#e74c3c', '#2E7DCC']
for body, color in zip(vp['bodies'], colors):
    body.set_facecolor(color)
    body.set_alpha(0.7)

ax.set_title('violinplot()')
ax.set_xticks([1, 2, 3])
ax.set_xticklabels(['Normal', 'Normal(wide)', 'Gamma'])
ax.grid(axis='y', alpha=0.3)
plt.show()

Matplotlib 参考文档Documentation de référence de Matplotlib

Autres extensions