Альтернативы лимиту Seaborn Lineplot для нескольких типов линий? - PullRequest
0 голосов
/ 23 января 2019

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

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

enter image description here

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

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()

enter image description here

Однако, похоже, что линия моряка стиль аргумент ограничен 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

enter image description here

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()

enter image description here

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

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

...