#python #matplotlib
Вопрос:
Я хотел бы изменить цвета matplotlib по умолчанию. Поскольку я уже пробовал сам и нашел решение своей проблемы, изменив цветовой циклер по умолчанию, это не идеальное решение, которое я искал :
import matplotlib as mpl
mpl.rcParams['axes.prop_cycle'] = mpl.cycler(color=["#013c9b",# my Blue
"#e0012e",# my Red
"#80cd59",# my Green
"#f6960a",# my Orange
"#4f94d4",# my Light Blue
"#ffd800",# my Yellow
"#6f7072",# my Grey
])
x = np.linspace(1, 10, 1000)
for i in range(1, 6):
y = np.sin(i*x) * i
plt.plot(x,y)
Хотя я добиваюсь результатов с помощью цветового цикла по умолчанию, это не очень удобно, если я хочу построить график с одним из моих конкретных цветов, так как мне нужно сделать что-то подобное :
y1_in_red = np.sin(2*x) * 2
y2_in_green = np.sin(3*x) * 3
my_Red = "#e0012e" # <-it's not very convenient/clean to do that
my_Blue = "#80cd59" # <-it's not very convenient/clean to do that
plt.plot(x, y1_in_red, color=my_Red)
plt.plot(x, y2_in_green, color=my_Blue)
Первая проблема с этим решением-это yticks, но я могу вернуть его в нормальное состояние. Вторая проблема в том, что он не такой чистый/эффективный, как я хочу. Я хотел бы знать, есть ли способ изменить красный цвет по умолчанию (и другие цвета) matplotlib, чтобы я мог просто сделать что-то подобное, чтобы достичь того же результата, что и выше :
y1_in_red = np.sin(2*x) * 2
y2_in_green = np.sin(3*x) * 3
# ...
# some code
# ...
plt.plot(x, y1_in_red, color='r')
plt.plot(x, y2_in_green, color='b')
Ответ №1:
Цвета взяты из словаря именованных цветов , к которым вы можете получить доступ matplotlib.colors.get_named_colors_mapping()
, поэтому, например, вы можете заменить r
и b
на красный и синий
from matplotlib.colors import get_named_colors_mapping
get_named_colors_mapping()["r"] = "#e0012e"
get_named_colors_mapping()["b"] = "#013c9b"
Затем вы можете использовать их, как обычно
import matplotlib.pyplot as plt
plt.plot([1, 2, 3], [1, 2, 3], "r") # will use your red