Зміна кольору осі, галочки та мітки для графіку в matplotlib


Відповіді:


170

Як швидкий приклад (з використанням трохи більш чистого методу, ніж потенційно повторюване запитання):

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()

текст заміщення


Поки що дякую. ax.tick_params (ось = 'x', colors = 'red') видає помилку AxesSubplot без атрибута 'tick_params'. Ти знаєш чому?
Річард Дюрр,

14
Хм ... Це дивно ... Яку версію matplotlib ви використовуєте? Обхідним шляхом є зробити [t.set_color('red') for t in ax.xaxis.get_ticklines()]і [t.set_color('red') for t in ax.xaxis.get_ticklabels()].
Джо Кінгтон,

33

Якщо у вас є кілька малюнків або підзаголовків, які ви хочете змінити, може бути корисно використовувати диспетчер контексту matplotlib для зміни кольору, замість того, щоб змінювати кожен окремо. Менеджер контексту дозволяє тимчасово змінювати параметри rc лише для безпосередньо наступного коду з відступом, але не впливає на загальні параметри rc.

Цей фрагмент дає дві фігури: перша із зміненими кольорами для осі, галочки та мітки, а друга із типовими параметрами rc.

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))

введіть тут опис зображення

введіть тут опис зображення

Ви можете ввести текст, plt.rcParamsщоб переглянути всі доступні параметри rc, і використовувати розуміння списку для пошуку ключових слів:

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

0

мотивований попередніми авторами, це приклад трьох осей.

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()
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.