73 votes

Comment définir le cycle de couleurs par défaut pour tous les sous-points avec matplotlib ?

Comment puis-je définir un ensemble de couleurs par défaut pour les graphiques réalisés avec matplotlib ? Je peux définir une carte de couleurs particulière comme ceci

import numpy as np
import matplotlib.pyplot as plt

fig=plt.figure(i)
ax=plt.gca()
colormap = plt.get_cmap('jet')
ax.set_color_cycle([colormap(k) for k in np.linspace(0, 1, 10)])

mais existe-t-il un moyen de définir le même ensemble de couleurs pour toutes les parcelles, y compris les sous-plages ?

0 votes

85voto

Joe Kington Points 68089

Bien sûr ! Soit spécifier axes.color_cycle dans votre .matplotlibrc fichier ou le définir au moment de l'exécution en utilisant matplotlib.rcParams ou matplotlib.rc .

A titre d'exemple de ce dernier point :

import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np

# Set the default color cycle
mpl.rcParams['axes.prop_cycle'] = mpl.cycler(color=["r", "k", "c"]) 

x = np.linspace(0, 20, 100)

fig, axes = plt.subplots(nrows=2)

for i in range(10):
    axes[0].plot(x, i * (x - 10)**2)

for i in range(10):
    axes[1].plot(x, i * np.cos(x))

plt.show()

enter image description here

4 votes

Pour ceux qui veulent plus de couleurs : mpl.rcParams['axes.color_cycle'] = ['bleu', 'vert', 'rouge', 'cyan', 'magenta', 'jaune', 'noir', 'violet', 'rose', 'marron', 'orange', 'sarcelle', 'corail', 'bleu clair', 'citron vert', 'lavande', 'turquoise', 'vert foncé', 'tan', 'saumon', 'or'].

3 votes

axes.color_cycle is not a valid rc parameter

54voto

À partir de matplotlib 1.5, mpl.rcParams['axes.color_cycle'] est déprécié. Vous devez utiliser axes.prop_cycle :

import matplotlib as mpl
mpl.rcParams['axes.prop_cycle'] = mpl.cycler(color=["r", "#e94cdc", "0.7"])

4voto

Joonho Park Points 64

Dans la version de 2.1.0, ce qui suit fonctionne pour moi, en utilisant set_prop_cycle et le module cycler.

from cycler import cycler
custom_cycler = (cycler(color=['r','b','m','g']))
ax.set_prop_cycle(custom_cycler)

vous pouvez ajouter un attribut de ligne supplémentaire

custom_cycler = (cycler(color=['r','b','m','g']) + cycler(lw=[1,1,1,2]))

ax' provient de ax=plt.axes() ou de tout autre générateur d'axes.

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