@Miogawa さんに、こちら でDeepdive頂いた箱ひげですが、
そこで、本日はSwarmplotというものをご紹介してみたいと思います。
可視化によく使うライブラリであるseabornでプロット可能な図です。
例えば、kaggleのtitanicで、「乗船した港」ごとに「乗客の年齢」の分布を見たい場合には、
箱ひげだとこんな感じです。
一応、
程度は読み取れるんですが、実を言うと、乗客の数が全然違うんです。
Southampton > Cherbourg > Queenstown
これが、箱ひげでなくSwarmplotを使うと
といった理由で、Swarmplotが結構好きです。
このスレッドいいですね! @ShinichiroOhno さん
Swarmplot初めて知りました。
箱ひげ図は説明の時にテキストで伝えられる、プロットコストが軽量というのがメリットでしたが、時代によるネットワーク帯域の拡大とかでそのままイメージでやりとりできるので、こういうプロットもすばらしいと感じました。
プロダクト実装だとSwarmplotは点の座標の数を大量に処理して特徴量が多いとパンクしそうなので、また別タイプのviolin plotを実装では使用するというのが落とし所になるかもしれないですね。
今は2nd Editionもあるようですが、インフォグラフィック的なビジュアライズに関してたくさん取り上げられているのでData Visualisation: A Handbook for Data Driven Designも面白いです。
@Miogawa
ありがとうございます!
おっしゃるとおり、確かに、Swarmplotはデータ数との戦いなんですよね。
(プロットコストが高いです。)
seabornのviolin_plot もたまに使います。
hueで、targetごとに表示も出来たりして便利です。
書籍は紹介ありがとうございます。
後ほどぜひ、確認してみたいと思います!
Swarmplotに似たものに、sinaplotと呼ばれるものがあります。
ベースはstrip plotですが、密度分布に従うようにX軸方向ジッターが調整されています。
これもSwarmplotと同じで分布、データ数両方が分かるので気に入っています。(プロットコストの高さも一緒ですね)
Rだと `ggforce::geom_sina()` で使えますがPythonだとあまり使われてなさそうですね。
一応、実装はGitHubで公開されていました。
https://github.com/mparker2/seaborn_sinaplot
ありがとうございます!
sinaplotは知りませんでした(勉強になりました。)
確かに、swamplotでは、Southamptonの左右が潰れてしまっているのですが、
> 密度分布に従うようにX軸方向ジッターが調整されています。
のおかげで見やすいですね!
そういえば、このスレッドで議論させて頂いた「箱ひげ」での可視化に関し、
私見ではありますが、少し情報を加えて、下記でQiita記事にさせていただきました。
ご興味ある方は、ご覧いただければ嬉しいです。