it-swarm.com.de

Einfache Liniendiagramme mit Seaborn

Ich versuche, eine ROC-Kurve mit Seaborn (Python) zu zeichnen. Mit matplotlib benutze ich einfach die Funktion plot:

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

woher one_minus_specificity und sensitivity sind zwei Listen gepaarter Werte.

Gibt es einfache Gegenstücke zur Handlungsfunktion in seaborn? Ich habe mir die Galerie angesehen, aber keine einfache Methode gefunden.

49
Titus Pullo

Da seaborn auch matplotlib zum Plotten verwendet, können Sie beide problemlos kombinieren. Wenn Sie nur das Styling von seaborn übernehmen möchten, können Sie set_style Funktion sollte Ihnen den Einstieg erleichtern:

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

Ergebnis:

enter image description here

72
hitzg

Es ist möglich, dies mit seaborn.lineplot() zu erledigen, erfordert jedoch einige zusätzliche Arbeit beim Konvertieren von numpy-Arrays in pandas dataframe. Hier ist ein vollständiges Beispiel:

# 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>

Und wir bekommen die folgende Handlung:

square plot

8
kmario23

Ja, Sie können das auch direkt in Seaborn tun. Dies geschieht mit tsplot (), das entweder ein einzelnes Array als Eingabe zulässt, oder zwei Arrays, bei denen das andere die 'Zeit' ist, d. H. Die x-Achse.

import seaborn as sns

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

sns.tsplot(data, time)

enter image description here

2
mikkokotila