L’attribut figsize=(width, height)
permet de définir la taille de la figure (unité: inches).
plt.figure(figsize=(12, 6))
fig, axes = plt.subplots(nrows=3, ncols=2, figsize=(12, 6))
Notons que par défaut, les sous-graphiques à l’intérieur de la figure sont collés les uns contre les autres, pour occuper tout l’espace, appeller la fonction plt.tight_layout()
après avoir définit tous les sous-graphiques.
Pour définir les paramètres par défaut pour toutes les figures:
plt.rcParams['figure.figsize'] = [8.0, 6.0]
plt.rcParams['figure.dpi'] = 80
plt.rcParams['savefig.dpi'] = 100
plt.rcParams['font.size'] = 12
plt.rcParams['legend.fontsize'] = 'large'
plt.rcParams['figure.titlesize'] = 'medium'
API globale: plt.title
plt.title("My title")
Pour une figure contenant plusieurs sous-graphiques: fig.suptitle
, ax.set_title
x = np.arange(1, 100)
fig = plt.figure(figsize=(12, 3))
fig.suptitle("Figures", fontsize=20, y=1.1) # y=0: bottom, y=1: top
# Graph #1
ax = fig.add_subplot(1, 2, 1)
ax.plot(x, x)
ax.set_xlabel('X')
ax.set_ylabel('X')
ax.set_title("Graph 1")
# Graph #2
ax = fig.add_subplot(1, 2, 2)
ax.plot(x, -x)
ax.set_xlabel('X')
ax.set_ylabel('-X')
ax.set_title("Graph 2")
fig.tight_layout()
Les méthodes plt.xlabel
et plt.ylabel
permettent de définir le titre des ordonnées
fig = plt.figure(figsize=(6, 3))
plt.plot(x, x)
plt.xlabel("X")
plt.ylabel("Y")
plt.title("Title")
Pour un sous-graphique: ax.set_xlabel
et ax.set_ylabel
On peut également utiliser la méthode set
ax.set(
xlabel='time (s)',
ylabel='voltage (mV)',
title='About as simple as it gets, folks')
L’attribut facecolor=color
permet de définir la couleur de fond d’une figure.
plt.figure(figsize=(6, 3), facecolor='grey')
plt.plot(x, x)
L’attribut facecolor
ou la méthode ax.set_facecolor
permettent de définir la couleur de fond d’un graphique.
fig = plt.figure(figsize=(6, 3), facecolor='grey')
ax = fig.add_subplot(1, 1, 1)
ax.set_facecolor('lightgrey')
ax.plot(x, x)
fig = plt.figure(figsize=(6, 3), facecolor='grey')
ax = fig.add_subplot(1, 1, 1, facecolor='lightgrey')
ax.plot(x, x)
Pour définir la couleur du fond pour tous les graphiques:
plt.rcParams['figure.facecolor'] = '0.75'
plt.xlim
et plt.ylim
permettent de modifier l’intervalle du graphique.
x = np.arange(0, 10)
plt.plot(x, x)
plt.xlim(-5,15)
plt.ylim(-5,15)
ax.set_xlim
et ax.set_ylim
pour un sous-graphique.
On peut personnaliser les bords du graphique (spine en anglais)
x = np.arange(0, 10)
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.plot(x, x)
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
On peut complètement désactiver l’affichage des axes et de la graduation:
x = np.arange(0, 10)
plt.axis('off')
plt.plot(x, x)
x = np.arange(0, 10)
fig, ax = plt.subplots(1,1)
ax.set_axis_off()
plt.plot(x, x)
plt.xticks
et yticks
permettent de définir la graduation à utiliser pour l’axe x et y respectivement.
ax.set_xticks
et ax.set_yticks
pour un sous-graphique.
x = np.arange(0, 10)
plt.plot(x, x)
plt.xticks(np.arange(0,10))
x = np.arange(0, 10)
plt.plot(x, x)
plt.xticks([])
plt.yticks([])
Ou en peut définir le nombre total de graduations à utiliser:
x = np.arange(0, 10)
plt.plot(x, x)
plt.gca().xaxis.set_major_locator(plt.MaxNLocator(3))
On peut modifier l’emplacement de la graduation:
x = np.arange(0, 10)
plt.plot(x, x)
plt.gca().yaxis.set_ticks_position('right')
On peut assigner un label aux graduations:
x = np.arange(0, 10)
plt.bar(x, x)
plt.xticks(range(11), list('abcdefijkl'))
fig, ax = plt.subplots()
x = np.arange(0, 10)
ax.bar(x, x)
ax.set_xticks(range(11), list('abcdefijkl'))
fig, ax = plt.subplots()
x = np.arange(0, 10)
ax.bar(x, x)
ax.xaxis.set_ticks(range(11))
ax.xaxis.set_ticklabels(list('abcdefijkl'))
On peut définir les labels avec un formatter:
from matplotlib.ticker import FuncFormatter
formatter = FuncFormatter(lambda x,pos: '$%1.1fk' % (x * 1e-3))
x = np.random.randint(25000,50000,100)
plt.plot(x)
plt.gca().yaxis.set_major_formatter(formatter)
from matplotlib import ticker
formatter = ticker.PercentFormatter(xmax=10)
x = np.arange(0, 10)
plt.plot(x, x)
plt.gca().xaxis.set_major_formatter(formatter)
On peut également afficher une graduation non labellée (tics mineurs):
x = np.arange(0, 10)
plt.plot(x, x)
plt.minorticks_on()
x = np.arange(0, 10)
plt.plot(x, x)
plt.minorticks_on()
plt.gca().xaxis.set_ticks(np.arange(0,10), minor=True)
plt.gca().yaxis.set_ticks(np.arange(0,10), minor=True)
On peut modifier le style des graduations avec la fonction tick_params
x = np.arange(0, 10)
plt.plot(x, x)
plt.minorticks_on()
plt.gca().xaxis.set_ticks(np.arange(0,10), minor=True)
plt.gca().yaxis.set_ticks(np.arange(0,10), minor=True)
plt.tick_params(rotation=90, axis='x')
plt.tick_params(color='red', width=2, length=10)
plt.tick_params(length=5, which='minor')
La méthode grid
permet d’afficher la grille du graphique
x = np.arange(0, 10)
plt.plot(x, x)
plt.grid()
fig, ax = plt.subplots()
x = np.arange(0, 10)
ax.plot(x,x)
ax.set_axisbelow(True)
ax.grid()
Différents paramètres permettant de personnaliser l’apparence de la grille: Documentation grid
plt.grid(color='lightgrey')
Par défaut grid ne s’applique que sur les tics majeurs, le paramètre which
permet de contrôler sur quoi on veut l’appliquer:
x = np.arange(0, 10)
plt.plot(x, x)
plt.minorticks_on()
plt.gca().xaxis.set_ticks(np.arange(0,10), minor=True)
plt.gca().yaxis.set_ticks(np.arange(0,10), minor=True)
plt.grid()
plt.grid(which='minor', alpha=0.2)
Pour modifier l’apparence de la grille pour tous les graphiques:
plt.rcParams['grid.color'] = 'k'
plt.rcParams['grid.linestyle'] = ':'
plt.rcParams['grid.linewidth'] = 0.5
plt.rcParams['axes.axisbelow'] = True
On peut modifier l’emplacement initial des ticks avec margins
x = np.arange(0, 10)
plt.plot(x, x)
plt.margins(x=0, y=0.1)
Par défaut, certains graphiques (comme imshow) ne prennent pas en compte les marges. On peut désactiver ce comportement avec use_sticky_edges = False
X = np.random.uniform(0,1,(8,8))
plt.imshow(X)
plt.gca().use_sticky_edges = False
plt.margins(x=0.05, y=0.05)
Pour aller plus loin: Axis API