Цветовая палитра Seaborn не работает в соответствии с линейным графиком

У меня небольшие проблемы с настройкой цветов для линейного графика. Я хочу показать ансамбль спектров с последовательной цветовой палитрой. Аргумент "palette =" blues "работает нормально, но не принимает никаких соответствующих списков цветов (например," Blues_d "), которые не включают никаких ярких цветов.

Это типичный график, показывающий, как выглядит мой график

Ниже вы можете увидеть код, который я использую.

color = (sns.dark_palette("purple"))
sns.set()

ax = sns.lineplot(x="Wavelength", y="Absorption", hue="t (min)", lw=1, data=df1, palette=color, legend="brief")

Проблема в том, что я получаю следующую ошибку:

ValueError: в списке палитр неверное количество цветов.

Итак, возникает вопрос: как я могу использовать функцию линейного графика и использовать последовательную цветовую палитру синего, красного или чего-то еще, не содержащую ярких цветов?

Я использую pandas версии 0.23.3, matplotlib версии 2.2.2 и seaborn версии 0.9.0


person Joscha Kruse    schedule 09.08.2018    source источник
comment
Честно говоря, почему он не может сделать это самостоятельно, проверив, что количество различных серий, требующих графиков, меньше, чем количество предоставленных цветов, вместо того, чтобы иметь точное совпадение   -  person ifly6    schedule 25.03.2019
comment
@ ifly6, потому что matplotlib и seaborn превратились в беспорядок :-)   -  person Lostman    schedule 28.02.2021


Ответы (2)


Поскольку вы упоминаете столбец t (min) в параметре hue, вам необходимо знать общее количество уникальных значений столбца.

Предположим, что в столбце 5 уникальных значений. Таким образом, вы можете установить значение параметра n_colors для sns.color_palette:

ax = sns.lineplot(x="Wavelength", 
                  y="Absorption", 
                  hue="t (min)", 
                  lw=1, 
                  data=df1, 
                  palette=sns.color_palette('coolwarm', n_colors=5), 
                  legend="brief")
person Hakan Özler    schedule 27.09.2018

Не нужно беспокоиться о количестве цветов, если вы установите свою цветовую палитру как цветовую карту, установив для аргумента as_cmap значение True в sns.color_palette:

ax = sns.lineplot(x="Wavelength", 
                      y="Absorption", 
                      hue="t (min)", 
                      lw=1, 
                      data=df1, 
                      palette=sns.color_palette('coolwarm', as_cmap = True), 
                      legend="brief")
person Pedro Martinez    schedule 02.06.2021
comment
Я думаю, что этот ответ поможет большинству людей, которые задаются этим вопросом. Спасибо. - person Amit Sharma; 10.06.2021