いろいろ倉庫

KNIME、EXCEL、R、Pythonなどの備忘録

【Python】綺麗なグラフを簡単に作りたい。

・お題:綺麗なグラフを簡単に作成し、データの分布や関係を見たい。

 

・ややこしいコマンドを書かず、とにかく綺麗なグラフで変数の関係を一目で分かるようにしたい。一つ一つのグラフを作成するなら、seabornというライブラリがとても便利。聞きなれないプロットがたくさん出てくるので、メモしておきたい。

・とりあえず、パッケージをインポートする(インストールは割愛)。

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

・次に、データセットを作成。

X=np.random.normal(0,10,100)
Y=[ np.random.normal( 0,5 ) + i*1.3 for i in X ]
Z=[ np.random.normal( 0,10) + i*3 for i in X ]
S=[ abs( i+10 )*10 + 1 for i in X ]

df=pd.DataFrame( zip(X, Y, Z), columns = ["X", "Y", "Z"])

①histplot

sns.histplot(X)

②boxplot

sns.boxplot(data=df)

③swarmplot

sns.swarmplot(data=df)

⑥scatterplot

sns.scatterplot(X,Y,hue=Z,s=S)

hueという引数に、実数を与えると色の濃淡、カテゴリカル変数を与えると色分けしてくれるみたい(下図)。

import random
M=[random.choice(["A","B","C"]) for n in range(100)]
sns.scatterplot(X,Y,hue=M,s=S)

⑤pairplot

sns.pairplot(data=df)

⑥jointplot

プロットがたくさんあった方が見栄えが良いので、データセットを作り直す。

A=np.random.normal(0,10,1000)
B=[np.random.normal(0,5) + i*1.3 for i in A]
df2=pd.DataFrame(zip(A,B),columns=["A","B"])

 

sns.jointplot(x="A",y="B",data=df2)

真ん中が重なって見にくいので、引数kind="hex"を与える。

sns.jointplot(x="A",y="B",data=df2,kind="hex")

⑦lineplot

にょろにょろしていた方が見栄えが良いので、データセットを作り直す。

X=np.linspace(0,10,100)
A=np.sin(X)
B=np.cos(X)
df3=pd.DataFrame(zip(A,B),columns=["sin","cos"])

sns.lineplot(data=df3)


ちょっとおしゃれで楽しい。

 

おわり