Seaborn игнорирует пользовательскую цветовую палитру, когда количество пятен превышает количество цветов - PullRequest
0 голосов
/ 20 января 2019

Я настроил палитру, содержащую только черный и серый, следующим образом.

import seaborn as sns
sns.set_palette(['#000000', '#ABABAB'])

Это прекрасно работает, если на моем графике только два или меньше патчей.

sns.barplot([1, 2], [3, 4])

Однако, когда у меня больше полос, чем цветов, seaborn переключается обратно на палитру по умолчанию.

sns.barplot([1, 2, 3], [4, 5, 6]) 

Можно ли сделать seaborn цикл через мою собственную цветовую палитру?В приведенном выше случае первый столбец должен быть черным, второй серый и третий снова черным.

Мой текущий обходной путь -

sns.set_palette(['#000000', '#ABABAB']*1000)

, но я сомневаюсь, что это стандартный способсделай это.

1 Ответ

0 голосов
/ 20 января 2019

Это довольно просто, согласно официальным документам.Просто установите n_colors на больше, чем количество цветов в палитре.Ниже приведена соответствующая информация (выделено жирным шрифтом ).Здесь вы можете просто установить n_colors на большое число.Все, что больше 2, будет работать в вашем случае.

n_colors: int, необязательный Количество цветов в палитре.Если None, значение по умолчанию будет зависеть от того, как указано palette.Именованные палитры по умолчанию имеют 6 цветов, но захват текущей палитры или передача в список цветов не изменит количество цветов, если это не указано. Запрос большего количества цветов, чем существует в палитре, приведет к циклическому циклу.

import seaborn as sns
sns.set_palette(['#000000', '#ABABAB'], n_colors=100)

sns.barplot([1, 2, 3], [4, 5, 6]) 

РЕДАКТИРОВАТЬ Кажется, что нужно иметь n_colors также больше, чем количество патчей (в данном случае баров).Таким образом, если в палитре два цвета и 4 пятна, то n_colors должно быть также больше, чем оба (> 4 в данном случае).

enter image description here

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