[Python][Seaborn] Swarmplotが便利
Swarmplotの利点
Seabornライブラリのswarmplotがとても便利、というだけの記事。
import matplotlib.pyplot as plt import seaborn as sns df = sns.load_dataset('iris') fig, ax = plt.subplots() sns.swarmplot(x='species', y='sepal_length', data=df, ax=ax) fig.savefig('sepal_length.jpg', dpi=300) plt.close(fig)
swarmplotを使うと、同じ値が複数あるときに横にずらして並べてくれるので、全体的な傾向が分かりやすい。
この図の場合、sepal_length(花のがくの長さ)の平均は、setosa種<versicolor種<virginica種、という傾向にありそうだが、同時に分散も大きくなっていそうだというのが見てとれる。
Swarmplotの限界
ただしswarmplotにも限界はあって、同じ値を持つデータ数が多くなりすぎると、横にずらすスペースがなくなって、最終的に重なってしまう。
下の図は、先程のデータセットを使ってpetal_length(花弁の長さ)をプロットしたもの。
左のsetosa種では似たような値が多いために、横の方で複数の点が重なってしまっている。そうなると、頻度が分かりにくくなり、swarmplotを使う利点は小さくなる。
もしswarmplotで綺麗に描けないくらい値の似たデータが多いなら、カテゴリごとにヒストグラムを描いて並べるのが良いだろう。ただその場合は、ヒストグラムの切り方(bins)に注意を払う必要がある。