2009-12-30 20 views
33

Czy istnieje sposób zmiany koloru osi (nie tyknięć) w matplotlib? Przeglądałem dokumenty dla osi, osi i artysty, ale bez powodzenia; galeria matplotlib również nie ma podpowiedzi. Każdy pomysł?Matplotlib: Zmiana koloru osi

Odpowiedz

61

Przy użyciu figur, można łatwo zmienić kolor kręgosłupa z:

ax.spines['bottom'].set_color('#dddddd') 
ax.spines['top'].set_color('#dddddd') 
ax.spines['right'].set_color('red') 
ax.spines['left'].set_color('red') 

użyć następujących zmienić tylko kleszczy:

ax.tick_params(axis='x', colors='red') 
ax.tick_params(axis='y', colors='red') 

a następnego tylko zmienić etykieta:

ax.yaxis.label.set_color('red') 
ax.xaxis.label.set_color('red') 

I wreszcie tytuł:

ax.title.set_color('red') 
+3

Doskonała odpowiedź, dziękuję! Dla każdego tylko uwaga: '' ax.tick_params (axis = 'x', colors = 'red', which = 'both') '' - which = "both" zmienia zarówno główny, jak i podrzędny kolor tyknięcia. – kinverarity

+0

'ax.tick_params (axis = 'x', colors = 'red')' wydaje się zmieniać kolor zarówno tyknięcia, jak i etykiety ... – Jonathan

+0

Czy można użyć 'ax.yaxis.label.set_color (' szary ")" w taki sposób, że tylko tyknięcia od "y1" do "y2" zmieniają swój kolor, a pozostałe pozostają niezmienione? – FaCoffee

16

Dla przypomnienia, jest to, jak udało mi się zrobić to działa:

fig = pylab.figure() 
ax = fig.add_subplot(1, 1, 1) 
for child in ax.get_children(): 
    if isinstance(child, matplotlib.spines.Spine): 
     child.set_color('#dddddd') 
+0

+1, znacznie lepiej niż przy użyciu globalnego rc. – Mark

+0

dzięki, mam nadzieję, że matplotlib doda prostszy sposób osiągnięcia tego. – jhanifen

7

Można to zrobić poprzez regulację ustawienia domyślne RC.

import matplotlib 
from matplotlib import pyplot as plt 

matplotlib.rc('axes',edgecolor='r') 
plt.plot([0, 1], [0, 1]) 
plt.savefig('test.png') 
+0

Matplotlib ma również [menedżer kontekstu] (http://matplotlib.org/users/style_sheets.html#temporary-styling), który pozwala na tymczasowe zmiany parametrów rc http://stackoverflow.com/a/41527038/2166823 –