📊

【python】seabornにないグラフをseabornっぽく描けるライブラリを作りました (スロープチャート/ダンベルチャート)

2023/01/16に公開

概要

pythonでグラフを描くとき、私はよくseabornを使っています。
seabornの文法では見た目の整ったグラフを簡単に作ることができるので、この書き方に慣れるとmatplotlibをそのまま使うのが億劫になります。
公式サイトの使用例を見るとたくさん種類があり、これだけでも充分なのですが、たまにマイナーな図を描きたくなったときに実装されていないことがあります。

今回は、2種類のグラフ (スロープチャート、ダンベルチャート) をseabornと同様の文法で書けるライブラリを作成しました。

なお、このライブラリは↓で紹介しているのと同じライブラリの中にまとめて実装しています。よろしければこちらもご覧ください。
https://zenn.dev/shiro46/articles/0b1df96a1bab7a

使い方

インストール、インポートの方法はリポジトリに説明を置いているのでそちらをご確認ください。
https://github.com/shiro46mt/shiroplot

スロープチャート

スロープチャートとは、異なる2時点のデータの上がり下がりを表したグラフです。
途中の経過は省略されるため、シンプルでわかりやすいのが特長です。

上がった時/下がった時 をそれぞれ 赤色/青色 で表記しています。差がmargin以下であれば等しいとみなして灰色表記です。

import seaborn as sns
df = sns.load_dataset('healthexp')

import shiroplot as splt
splt.slopechart(data=df, x='Year', y='Life_Expectancy', group='Country', x_items=[2018, 2020],
    increase_color='tab:red', decrease_color='tab:blue', even_color='dimgray', size=8, fmt='{:.1f}', margin=0.2)

ダンベルチャート

ダンベルチャートとは、2つの値を比較するときに便利なグラフです。2つの値のマーカーを線でつないだ様子がダンベルに見えるのでこう呼ばれています。

ダンベルチャートを描く時は、値を降順に並べておくときれいに見えます。今回の実装ではgroup_items[before, after]として、afterの値で降順に並ぶように処理しています。

import seaborn as sns
df = sns.load_dataset('healthexp')

import shiroplot as splt
splt.dumbbellchart(data=df, group='Year', x='Life_Expectancy', y='Country', group_items=[2019, 2020],
    beforecolor='dimgray', aftercolor='tab:red', edgecolor='gray', size=8)

実装

↓のサイトを参考にしました。
https://www.machinelearningplus.com/plots/top-50-matplotlib-visualizations-the-master-plots-python/

あとがき

基本的に、自分が使いたいと思ったグラフを実装しています。
他にも「こういうのがあったらいいな」と思ったときに細々と更新していくつもりです。

自分が書いたコードを人に見せる機会がほとんどないので、もしも「こうしたらもっと簡単に実装できるよ」など改善点があればコメントで教えていただけると泣いて喜びます。

Discussion