Простые линейные графики с использованием seaborn

Я пытаюсь построить кривую ROC с помощью seaborn (python). В matplotlib я просто использую функцию plot:

plt.plot(one_minus_specificity, sensitivity, 'bs--')

где one_minus_specificity и sensitivity - два списка парных значений.

Есть ли простые аналоги функции сюжета в seaborn? Я посмотрел галерею, но не нашел простого метода.


person Titus Pullo    schedule 26.06.2015    source источник


Ответы (3)


Поскольку seaborn также использует matplotlib для построения графика, вы можете легко комбинировать их. Если вы хотите использовать стиль seaborn, то _ 1_ должна помочь вам:

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

sns.set_style("darkgrid")
plt.plot(np.cumsum(np.random.randn(1000,1)))
plt.show()

Результат:

введите описание изображения здесь

person hitzg    schedule 26.06.2015

Это можно сделать с помощью seaborn.lineplot(), но это включает в себя некоторую дополнительную работу по преобразованию массивов numpy в фреймворк pandas. Вот полный пример:

# imports
import seaborn as sns
import numpy as np
import pandas as pd

# inputs
In [41]: num = np.array([1, 2, 3, 4, 5])
In [42]: sqr = np.array([1, 4, 9, 16, 25])

# convert to pandas dataframe
In [43]: d = {'num': num, 'sqr': sqr}
In [44]: pdnumsqr = pd.DataFrame(d)

# plot using lineplot
In [45]: sns.set(style='darkgrid')
In [46]: sns.lineplot(x='num', y='sqr', data=pdnumsqr)
Out[46]: <matplotlib.axes._subplots.AxesSubplot at 0x7f583c05d0b8>

И получаем следующий сюжет:

квадратный участок

person kmario23    schedule 10.09.2018

Да, вы можете сделать то же самое непосредственно в Seaborn. Это делается с помощью tsplot (), который позволяет использовать либо один массив в качестве входных данных, либо два массива, где второй - это «время», то есть ось x.

import seaborn as sns

data =  [1,5,3,2,6] * 20
time = range(100)

sns.tsplot(data, time)

введите описание изображения здесь

person mikkokotila    schedule 12.05.2018
comment
tsplot будет заменен на lineplot - person Hielke Walinga; 18.07.2018