Changer la couleur de l'axe, des graduations et des étiquettes pour un tracé dans matplotlib


Réponses:


165

À titre d'exemple rapide (en utilisant une méthode légèrement plus propre que la question potentiellement dupliquée):

import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111)

ax.plot(range(10))
ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis')

ax.spines['bottom'].set_color('red')
ax.spines['top'].set_color('red')
ax.xaxis.label.set_color('red')
ax.tick_params(axis='x', colors='red')

plt.show()

texte alternatif


Merci jusqu'à présent. ax.tick_params (axis = 'x', colors = 'red') produit une erreur AxesSubplot n'a pas d'attribut d'erreur 'tick_params'. Est-ce que tu sais pourquoi?
Richard Durr

14
Hmm ... C'est étrange ... Quelle version de matplotlib utilisez-vous? Une solution de contournement consiste à faire [t.set_color('red') for t in ax.xaxis.get_ticklines()]et [t.set_color('red') for t in ax.xaxis.get_ticklabels()].
Joe Kington

32

Si vous avez plusieurs figures ou sous-graphiques à modifier, il peut être utile d'utiliser le gestionnaire de contexte matplotlib pour changer la couleur, au lieu de changer chacun d'eux individuellement. Le gestionnaire de contexte vous permet de modifier temporairement les paramètres rc uniquement pour le code indenté immédiatement suivant, mais n'affecte pas les paramètres rc globaux.

Cet extrait donne deux chiffres, le premier avec des couleurs modifiées pour l'axe, des graduations et des graduations, et le second avec les paramètres rc par défaut.

import matplotlib.pyplot as plt
with plt.rc_context({'axes.edgecolor':'orange', 'xtick.color':'red', 'ytick.color':'green', 'figure.facecolor':'white'}):
    # Temporary rc parameters in effect
    fig, (ax1, ax2) = plt.subplots(1,2)
    ax1.plot(range(10))
    ax2.plot(range(10))
# Back to default rc parameters
fig, ax = plt.subplots()
ax.plot(range(10))

entrez la description de l'image ici

entrez la description de l'image ici

Vous pouvez taper plt.rcParamspour afficher tous les paramètres rc disponibles et utiliser la compréhension de liste pour rechercher des mots-clés:

# Search for all parameters containing the word 'color'
[(param, value) for param, value in plt.rcParams.items() if 'color' in param]

0

motivé par les précédents contributeurs, il s'agit d'un exemple de trois axes.

import matplotlib.pyplot as plt

x_values1=[1,2,3,4,5]
y_values1=[1,2,2,4,1]

x_values2=[-1000,-800,-600,-400,-200]
y_values2=[10,20,39,40,50]

x_values3=[150,200,250,300,350]
y_values3=[-10,-20,-30,-40,-50]


fig=plt.figure()
ax=fig.add_subplot(111, label="1")
ax2=fig.add_subplot(111, label="2", frame_on=False)
ax3=fig.add_subplot(111, label="3", frame_on=False)

ax.plot(x_values1, y_values1, color="C0")
ax.set_xlabel("x label 1", color="C0")
ax.set_ylabel("y label 1", color="C0")
ax.tick_params(axis='x', colors="C0")
ax.tick_params(axis='y', colors="C0")

ax2.scatter(x_values2, y_values2, color="C1")
ax2.set_xlabel('x label 2', color="C1") 
ax2.xaxis.set_label_position('bottom') # set the position of the second x-axis to bottom
ax2.spines['bottom'].set_position(('outward', 36))
ax2.tick_params(axis='x', colors="C1")
ax2.set_ylabel('y label 2', color="C1")       
ax2.yaxis.tick_right()
ax2.yaxis.set_label_position('right') 
ax2.tick_params(axis='y', colors="C1")

ax3.plot(x_values3, y_values3, color="C2")
ax3.set_xlabel('x label 3', color='C2')
ax3.xaxis.set_label_position('bottom')
ax3.spines['bottom'].set_position(('outward', 72))
ax3.tick_params(axis='x', colors='C2')
ax3.set_ylabel('y label 3', color='C2')
ax3.yaxis.tick_right()
ax3.yaxis.set_label_position('right') 
ax3.spines['right'].set_position(('outward', 36))
ax3.tick_params(axis='y', colors='C2')


plt.show()
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.