303 votes

Python - modification de la couleur d'arrière-plan des tracés dans matplotlib

Je réalise un nuage de points avec matplotlib et j'ai besoin de changer l'arrière-plan du graphique actuel en noir. Je sais comment changer la couleur de la face du graphique en utilisant :

fig = plt.figure()
fig.patch.set_facecolor('black')

Le problème est que cela change la couleur de l'espace autour de la parcelle. Comment puis-je modifier la couleur d'arrière-plan réelle de la parcelle ?

12 votes

Pour votre information, en plus de ce que @Evert a dit, vous pourriez simplement utiliser ax.patch.set_facecolor('black') (où ax est l'instance des axes). fig.patch est le fond de la figure et ax.patch est l'arrière-plan des axes.

17voto

Une suggestion dans d'autres réponses est d'utiliser ax.set_axis_bgcolor("red") . Cette méthode est cependant obsolète, et ne fonctionne pas avec MatPlotLib >= v2.0.

Il est également suggéré d'utiliser ax.patch.set_facecolor("red") (fonctionne à la fois sur MatPlotLib v1.5 et v2.2). Bien que cela fonctionne bien, une solution encore plus simple pour les versions 2.0+ est d'utiliser la méthode suivante

ax.set_facecolor("red")

0 votes

FYI, ax.set_axis_bgcolor("black") fonctionne sur Python v2.7.14/MPL v1.5.1, mais ax.set_facecolor() ne le fait pas. Quelque part entre MPL v1.5.1 et v2.2.0, la fonction appropriée a été modifiée.

1 votes

@Demis Si vous avez besoin d'une solution qui fonctionne dans toutes les versions, utilisez ax.patch.set_facecolor("red") . A partir de matplotlib 2.0, la méthode recommandée est la suivante ax.set_facecolor .

11voto

Flonks Points 41

Le plus simple est probablement de fournir la couleur lorsque vous créez le graphique :

fig1 = plt.figure(facecolor=(1, 1, 1))

ou

fig1, (ax1, ax2) = plt.subplots(nrows=1, ncols=2, facecolor=(1, 1, 1))

3 votes

Cela ne modifie que la couleur d'arrière-plan de la fenêtre, et non la couleur réelle du tracé.

0voto

Douasb' Points 16

En plus de la réponse de NickT, vous pouvez également supprimer le cadre d'arrière-plan en le réglant sur "none" comme expliqué ici : https://stackoverflow.com/a/67126649/8669161

import matplotlib.pyplot as plt
plt.rcParams['axes.facecolor'] = 'none'

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X