Как поставить цвет за осями в python? - PullRequest
1 голос
/ 02 марта 2020

Я пытаюсь создать несколько графиков в python 3 для проекта по науке о данных, и у меня возникает проблема, когда при сохранении текста на моих осях нет цвета. Вот мой код с примером графика:

plt.plot(play_num_2019[g], home_prob_2019[g], color = getColor(home_teams_2019[g]))
plt.plot(play_num_2019[g], away_prob_2019[g], color = getColor(away_teams_2019[g]))
plt.xlabel("Play Number")
plt.ylabel("Win Probability")
plt.legend([home_teams_2019[g], away_teams_2019[g]])
fig = plt.figure()
fig.patch.set_facecolor('xkcd:white')

Plot

Ответы [ 2 ]

1 голос
/ 02 марта 2020

matplotlib.rcParams содержит параметры графика для matplotlib, хранящиеся в файле matplotlibr c. Вы можете изменить параметры либо непосредственно в файле matplotlibr c (как объяснено здесь ), либо в своем коде непосредственно перед построением графика. Ниже приведен пример изменения цвета фона рисунка по вашему запросу:

import matplotlib as mpl
import matplotlib.plot as plt

plt.plot(play_num_2019[g], home_prob_2019[g], color = getColor(home_teams_2019[g]))
plt.plot(play_num_2019[g], away_prob_2019[g], color = getColor(away_teams_2019[g]))
plt.xlabel("Play Number")
plt.ylabel("Win Probability")
mpl.rcParams['figure.facecolor'] = 'r' # <--- here is the line for changing the background to red
plt.legend([home_teams_2019[g], away_teams_2019[g]])
fig = plt.figure()
fig.patch.set_facecolor('xkcd:white')

Если вы хотите изменить его только после сохранения рисунка, измените следующий параметр вместо этого.

mpl.rcParams['savefig.facecolor'] = 'r'
0 голосов
/ 02 марта 2020

Если вы хотите установить цвет лица для фигуры, вы можете использовать matplotlib.rcParams, чтобы установить глобальный цвет лица - для всех фигур - или для одной фигуры вы можете указать цвет лица при вызове plt.savefig(). Если вы хотите установить цвет лица с помощью fig.patch.set_facecolor(), вы можете просто использовать fig.get_facecolor() в savefig(). Например:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, np.pi*4, 100)

fig = plt.figure()
plt.plot(x, np.sin(x))
plt.plot(x, np.cos(np.sin(x)))
fig.patch.set_facecolor((0.68, 0.78, 0.91))

plt.savefig('/path/to/output.png', facecolor = fig.get_facecolor())

Вывод

enter image description here

Если вы хотите, чтобы этот цвет также применялся за областью графика, то вы должны пройти transparent=True в plt.savefig(), что даст вам

enter image description here

Или - как я предпочитаю - вы можете установить альфа патча осей следующим образом

plt.gca().patch.set_alpha(0.7)

или тому подобное. Это приведет к

enter image description here


Примечание - Установка цвета лица на 'xkcd:white' не будет иметь никакого эффекта, потому что соответствующие значения RGB (1.0, 1.0, 1.0) - идентичны цвету лица по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...