Изменение цвета оси, меток и меток для графика в matplotlib

Ответы:

171

В качестве быстрого примера (используя более чистый метод, чем потенциально повторяющийся вопрос):

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 (axis = '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]
Joelostblom
источник
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()
космос
источник