Проблема в том, что sns.set_palette
устанавливает цветовой цикл по умолчанию для matplotlib. Но цветовой цикл также является свойством каждого ax
. Следовательно, sns.set_palette
влияет только на ax
, созданный впоследствии. В вопросе о посте ax
уже был создан ранее и уже имел свой собственный цветовой цикл.
Итак, чтобы получить желаемое поведение, палитра должна быть явно назначена ax
, Функция ax.set_prop_cycle
делает именно это. Вот код Обратите внимание, что я переименовал cmap_blue
в palette_blue
, чтобы провести различие между картой цветов (функция, которая выводит цвета) и палитрой (список цветов).
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from cycler import cycler
fig, ax = plt.subplots()
palette_blue = sns.color_palette("Blues")
palette_green = sns.color_palette("Greens")
ax.set_prop_cycle(cycler(color=palette_blue))
for i in range(1, 4):
plt.plot(np.linspace(0, 10, 100), 10 * i + np.random.normal(0, 1, 100).cumsum())
ax.set_prop_cycle(cycler(color=palette_green))
for i in range(4, 7):
plt.plot(np.linspace(0, 10, 100), 10 * i + np.random.normal(0, 1, 100).cumsum())
plt.show()