Альтернативы лимиту Seaborn Lineplot для нескольких типов линий?

У меня есть некоторые данные продольных испытаний, и я хотел изучить общую тенденцию для этих данных. Мои данные настроены так:

import seaborn as sns
import matplotlib.pyplot as plt

test_data = pd.read_csv('./Files Used to Generate Graphs/test_data.csv',header = 0)
test_data

Я хочу построить эти данные так, чтобы у каждого донора была своя собственная продольная линия данных, но цвет каждой линии в зависимости от пола донора был таким:

test_plt = sns.lineplot(x = 'Timepoint',y = 'Prevalence',
                   hue = 'Gender',
                   data = test_data,
                   style = 'Donor',
                   palette = dict(Male = 'red',
                                 Female = 'blue'))

for line in test_plt.lines:
    line.set_linestyle("-")
ax = plt.gca()
legend = ax.legend()
legend.set_visible(False)
plt.figure()

Тем не менее, похоже, что аргумент стиля seaborn lineplot ограничен 6 типами. Если я пытаюсь добавить другого донора к своим данным и нанести их на график, я получаю это:

append_df = pd.DataFrame(index = [12,13],
                    columns = ['Donor','Timepoint','Gender','Prevalence'])
append_df['Donor'] = 7
append_df['Gender'] = 'Female'
append_df.loc[12,'Timepoint'] = 1945
append_df.loc[13,'Timepoint'] = 1948
append_df.loc[12,'Prevalence'] = 18
append_df.loc[13,'Prevalence'] = 36
test_data = test_data.append(append_df)
test_data

test_plt = sns.lineplot(x = 'Timepoint',y = 'Prevalence',
                   hue = 'Gender',
                   data = test_data,
                   style = 'Donor',
                   palette = dict(Male = 'red',
                                 Female = 'blue'))

for line in test_plt.lines:
    line.set_linestyle("-")
ax = plt.gca()
legend = ax.legend()
legend.set_visible(False)
plt.figure()

Так есть ли способ обойти это ограничение на линейный участок или мне нужно пройти через Matplotlib для этого? Если последнее, как будет выглядеть код Matplotlib?

На отдельном примечании, есть ли способ создать легенду на участке морского происхождения, которая показывает пол каждого донора, а не каждого конкретного донора?

0 ответов

Другие вопросы по тегам