web-dev-qa-db-ja.com

シーボーンを使用した単純なラインプロット

私はseaborn(python)を使用してROC曲線をプロットしようとしています。 matplotlibでは、単にplot関数を使用します。

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

ここで、one_minus_specificitysensitivityは、ペアの値の2つのリストです。

Seabornのプロット関数の単純な対応物はありますか?ギャラリーを見ましたが、簡単な方法は見つかりませんでした。

49
Titus Pullo

Seabornもmatplotlibを使用してプロットを行うため、この2つを簡単に組み合わせることができます。 seabornのスタイリングのみを採用する場合は、 set_style 関数を使用して開始します。

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

結果:

enter image description here

72
hitzg

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>

そして、次のプロットを取得します。

square plot

8
kmario23

はい、Seabornで直接同じことができます。これは、入力として単一の配列、またはもう一方が「時間」であるx軸の2つの配列のいずれかを許可するtsplot()で行われます。

import seaborn as sns

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

sns.tsplot(data, time)

enter image description here

2
mikkokotila