Морской питон меняет цвет серии на участки - PullRequest
0 голосов
/ 04 марта 2019

Я пытаюсь изменить цветовую схему по умолчанию, используемую Seaborn на графиках, я просто хочу что-то простое, например схему HLS, показанную в их документации.Однако их методы, похоже, не работают, и я могу только предположить, что это из-за моего использования «оттенка», но я не могу понять, как заставить его работать должным образом.Вот текущий код, datain - это просто текстовый файл с правильным числом столбцов чисел, с p в качестве значения индексации:

import pandas as pd
import numpy as np
datain = np.loadtxt("data.txt")
df = pd.DataFrame(data = datain, columns = ["t","p","x","y","z"])
ax3 = sns.lineplot("t", "x", sns.color_palette("hls"), data = df[df['p'].isin([0,1,2,3,4])], hue = "p")
plt.show()

Код отображает первые несколько наборов данных из файла, иони выходят в этом странном фиолетовом пастельном выборе, который, по-видимому, по умолчанию использует seaborn, если я не включу функцию sns.color_palette.Если я включу его, я получу ошибку:

TypeError: lineplot () получил несколько значений для ключевого аргумента 'hue'

, что кажется немного странным, учитывая формат, принятый для функции lineplot.

1 Ответ

0 голосов
/ 05 марта 2019

Первое: вам нужно придерживаться правильного синтаксиса.Палитра предоставляется через аргумент palette.Просто указав его в качестве третьего аргумента lineplot, можно будет интерпретировать его как третий аргумент lineplot, который оказывается hue.

Затем вам нужно убедиться, что палитра имеет столько цветов, сколько у вас различных значений p.

import seaborn as sns
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

datain = np.c_[np.arange(50),
               np.tile(range(5),10),
               np.linspace(0,1)+np.tile(range(5),10)/0.02]
df = pd.DataFrame(data = datain, columns = ["t","p","x"])

ax = sns.lineplot("t", "x", data = df, hue = "p", 
                  palette=sns.color_palette("hls", len(df['p'].unique())))

plt.show()

enter image description here

...