こんにちは、JS2IIUです。
本記事では、Pythonのデータ可視化ライブラリであるSeabornの中でも、特に散布図に近い形でカテゴリデータを視覚化できる「stripplot」を、Webアプリ作成フレームワークのStreamlitに組み込む方法を詳しく解説します。 今回もよろしくお願いします。
1. はじめに
データ分析の結果を見やすく提示することは、分析者にとっても非専門家に説明する際にも大変重要です。Seabornには多数のグラフ描画機能がありますが、その中でユニークな使い方ができる「stripplot」は、カテゴリごとのデータ点を散布図的にプロットし、分布を視覚的に理解する際に便利です。
一方で、同じPythonエコシステムのStreamlitを使うと、このグラフをシンプルなWebインターフェースで動的に表示できます。
本記事では、この2つを組み合わせて、手軽に分析結果をWeb上で共有できる手法をご紹介します。
2. StreamlitとSeabornについて
2.1 Streamlitとは
StreamlitはPythonコードだけで簡単にインタラクティブなWebアプリを作成できるオープンソースのフレームワークです。
特徴としては以下が挙げられます。
- Pythonがわかればすぐに使える
- 実行が高速でセットアップが簡単
- データ可視化を簡単にWebアプリ化可能
Streamlitについては、こちらの記事一覧を参考にしてください。基本的な使い方から実践的な内容まで170本以上の記事があります。

2.2 Seabornとは
SeabornはMatplotlibをベースにした高レベルの統計データ可視化ライブラリです。
特徴としては、
- 美しくて高度なグラフが手軽に作成可能
- 統計的な視覚化に最適化されている
- Pandasのデータフレームとの相性が良い
こちらの記事も参考になさってください。
2.3 StreamlitとSeabornの連携の重要性
Seabornで作成したグラフを静止画として保存し表示するだけでなく、Streamlitの画面上にインタラクティブに表示することで、ユーザーが操作しやすいダッシュボードの構築が可能となります。
例えばユーザーによる入力値の変更でグラフを更新するような使い方ができ、データ分析の成果をより深く伝えられるようになります。
3. 環境のセットアップ
3.1 必要なソフトウェア・ライブラリのインストール
まずはPython環境に必要なライブラリをインストールしましょう。
pip install streamlit seaborn matplotlib pandas各パッケージの説明:
- streamlit:Webアプリ作成フレームワーク
- seaborn:グラフ作成ライブラリ
- matplotlib:Seabornの描画に使用されるベースグラフライブラリ
- pandas:データ操作用ライブラリ
3.2 インストールの確認方法
ターミナルやコマンドプロンプトで以下のコマンドを実行し、エラーなくバージョンが表示されれば成功です。
python -c "import streamlit; print(streamlit.__version__)"
python -c "import seaborn; print(seaborn.__version__)"
python -c "import pandas; print(pandas.__version__)"4. stripplotの基本概念
4.1 stripplotとは
stripplotはカテゴリ変数の分布を示すグラフで、カテゴリごとの点(散布図)を横並びで表示します。
データの分布やばらつき、どのカテゴリにデータが集中しているかを視覚的に把握できるのが特徴です。
4.2 stripplotが適用されるケース
- グループごとの個々のデータ点を比較したい場合
- データにばらつきや外れ値があるかを確認したい場合
- 箱ひげ図などの要約情報より詳細なデータ分布を見たい場合
5. データの前処理
5.1 データセットの選択
今回はSeabornに標準搭載されている「tips(チップのデータセット)」を使用します。
このデータセットには食事代のチップや客数、曜日、性別といった情報が含まれます。
import seaborn as sns
tips = sns.load_dataset("tips")
print(tips.head())5.2 データのクリーニングと整形
今回は欠損値がほとんどないため追加のクリーニングは不要ですが、もし欠損値があれば
tips = tips.dropna()などで事前に対処します。
5.3 データの準備(Seabornで使用するための形式)
stripplotでは、x軸にカテゴリ変数、y軸に数値変数を指定するのが基本です。
例えば曜日ごとのチップ額を表示する場合、
- x: day (カテゴリ変数)
- y: tip (数値変数)
6. Streamlitアプリへの統合方法
6.1 Streamlitアプリの基本構造
最低限のファイル app.py を作成し、Streamlitで起動します。
import streamlit as st
st.title("Seaborn stripplot with Streamlit")ターミナルで以下コマンドし、ローカルサーバーを立ち上げます。
streamlit run app.py6.2 stripplotの描画コードの組み込み
SeabornのグラフをStreamlitに表示するには、MatplotlibのFigureオブジェクトを渡す方法が標準的です。
下面のサンプルでは、「day」ごとの「tip」分布をstripplotで描き、Streamlitで表示します。
import streamlit as st
import seaborn as sns
import matplotlib.pyplot as plt
# データ読み込み
tips = sns.load_dataset("tips")
st.title("Seaborn stripplot Example")
# Figureを作成
fig, ax = plt.subplots(figsize=(8, 5))
sns.stripplot(x="day", y="tip", data=tips, ax=ax)
st.pyplot(fig)
6.3 アプリの動作確認
保存後、再度
streamlit run app.pyで起動し、ブラウザに表示されたstripplotが正しく表示されることを確認してください。
7. stripplotのカスタマイズ技法
7.1 カラーの変更
色を変えるには palette オプションを使います。
sns.stripplot(x="day", y="tip", data=tips, ax=ax, palette="Set2")自分で色をリストで指定することも可能です。
custom_palette = ["#FF6347", "#3CB371", "#1E90FF", "#FFD700"]
sns.stripplot(x="day", y="tip", data=tips, ax=ax, palette=custom_palette)7.2 サイズの調整
点のサイズを変えるには size オプションを用います。
sns.stripplot(x="day", y="tip", data=tips, ax=ax, size=8)7.3 ラベルの追加・編集
軸ラベルやタイトルはMatplotlibの関数で設定します。
ax.set_title("Tips by Day - Stripplot")
ax.set_xlabel("Day of Week")
ax.set_ylabel("Tip Amount")7.4 その他のカスタマイズオプション
jitter=Trueや数値の調整で点の横スライドを制御hueを使って別カテゴリで色分け表示可能(例:性別で違い表示)
例:
sns.stripplot(x="day", y="tip", hue="sex", data=tips, ax=ax, jitter=True, palette="coolwarm")8. 実践的なサンプルプロジェクト
8.1 プロジェクトの概要
来店データを基に曜日ごとの客層や支払ったチップの分布を分析し、飲食店のスタッフ研修資料として活用するWebアプリの作成を想定します。
8.2 プロジェクトでのstripplotの使用方法
曜日別のチップ分布や性別による違いをstripplotで可視化し、店長やスタッフが直感的に理解できるインターフェースを提供します。
import streamlit as st
import seaborn as sns
import matplotlib.pyplot as plt
st.title("飲食店チップ分析ダッシュボード")
tips = sns.load_dataset("tips")
# 性別で色分けしつつstripplotを描く
fig, ax = plt.subplots(figsize=(8, 5))
sns.stripplot(x="day", y="tip", hue="sex", data=tips, jitter=True, dodge=True, ax=ax, palette="Set1")
ax.set_title("曜日ごとのチップ分布(性別別)")
ax.set_xlabel("曜日")
ax.set_ylabel("チップ額")
ax.legend(title="性別")
st.pyplot(fig)
8.3 プロジェクトでのStreamlitとSeabornの組み合わせの利点
- コードがシンプルかつ可読性が高い
- Webブラウザでリアルタイムに表示・共有が簡単
- ユーザー入力を追加すれば動的にグラフを更新できるため応用範囲が広い
9. まとめ
- stripplotはカテゴリごとのデータ点の分布を詳細に見るために適したグラフ
- StreamlitはSeabornの図をWebアプリで簡単に表示できる強力なツール
- 環境構築から実際の描画、カスタマイズまでステップバイステップで習得可能
- 簡単なサンプルから実践的なプロジェクトへ発展可能
10. 参考資料
- Streamlit 公式ドキュメント
- Seaborn 公式ドキュメント
- Matplotlib 公式ドキュメント
- Pandas 公式ドキュメント
- Seaborn stripplot チュートリアル
- Streamlitでグラフを表示する公式ガイド
最後まで読んでいただきありがとうございます。



コメント