こんにちは、JS2IIUです。
Streamlitでグラフを描画する方法を説明していきます。今回は棒グラフと散布図についてみていきます。よろしくお願いします。
1. はじめに
データ分析やアプリ開発を行う上で、「視覚的にわかりやすくデータを表示する」ことはとても重要です。特に、数値の推移や分布を一目で把握できるグラフは、分析結果を伝える上で欠かせません。
本記事では、Python製のWebアプリフレームワーク Streamlit を使って、棒グラフ(bar chart) と 散布図(scatter plot) を簡単に描画する方法をご紹介します。使うのは、Streamlit に標準搭載されている便利な関数 st.bar_chart と st.scatter_chart です。
2. Streamlit とは?
Streamlit は、Python のコードだけで簡単にインタラクティブな Web アプリを作れるライブラリです。インストールも簡単で、データサイエンスや機械学習との相性も抜群です。
インストール方法(簡単おさらい)
pip install streamlitアプリの起動方法
Pythonファイル(例: app.py)を作成して、以下のコマンドで起動します。
streamlit run app.pyそれでは早速、棒グラフの描き方から見ていきましょう。
3. 棒グラフ(st.bar_chart)の使い方
3.1 ステップ1:基本の棒グラフを描く
まずは最もシンプルな棒グラフを描いてみましょう。
import streamlit as st
import pandas as pd
import numpy as np
st.title("基本の棒グラフ")
# ランダムなデータを生成
data = pd.DataFrame(
np.random.randint(10, 100, size=(5, 3)),
columns=["A", "B", "C"]
)
# 棒グラフを表示
st.bar_chart(data)
解説:
np.random.randintでランダムな整数データを生成st.bar_chartは DataFrame を渡すだけで、自動的に棒グラフを描いてくれます- デフォルトでは インデックスをX軸, 各カラムを Y軸の系列 として描画します
3.2 ステップ2:インデックスに名前をつけてみよう
曜日をX軸に表示するようにしてみましょう。
days = ["Mon", "Tue", "Wed", "Thu", "Fri"]
data.index = days
st.bar_chart(data)
解説:
data.index = daysでX軸のラベルをカスタマイズできます- より意味のあるグラフになりますね
3.3 カスタマイズのポイント
st.bar_chart はシンプルな関数なので、細かいスタイル調整(色、ラベルの位置など)はできません。より自由度の高いグラフが必要な場合は、st.altair_chart や st.pyplot などの関数を検討しましょう。
4. 散布図(st.scatter_chart)の使い方
散布図は、2つ以上の数値データの相関関係を見るのに適したグラフです。
4.1 ステップ1:基本の散布図を描いてみよう
st.title("基本の散布図")
# 散布図用のデータ
data = pd.DataFrame({
'x': np.random.rand(100),
'y': np.random.rand(100),
'z': np.random.rand(100) # サイズや色に使える追加列
})
st.scatter_chart(data)
解説:
x,y,zの3つのカラムがあるDataFrameを使っていますxとyのカラムが それぞれX軸とY軸に 自動的にマッピングされますzカラムは 点の大きさや色の強さに反映 される場合があります
4.2 ステップ2:軸のカラムを選んで描く
例えば、明示的に必要なカラムだけ選んで渡すこともできます。
selected = data[["x", "y"]]
st.scatter_chart(selected)
4.3 use_container_width=True を使ってみよう
グラフの横幅を画面いっぱいに広げたい場合は、以下のようにします。
st.scatter_chart(selected, use_container_width=True)5. st.bar_chart と st.scatter_chart の違いと使い分け
| 項目 | st.bar_chart | st.scatter_chart |
|---|---|---|
| 用途 | カテゴリ別の数量比較 | 2変数・3変数の相関関係の可視化 |
| 入力データの形式 | DataFrame(複数列) | DataFrame(2〜3列) |
| X軸 | インデックス | 自動的に最初の列がX軸になる |
| カスタマイズ性 | 限定的(簡単に描ける) | 限定的(詳細調整は不可) |
| 難易度 | 非常にやさしい | やさしい |
どちらも非常にシンプルに使える関数なので、「とにかく素早くグラフを描きたい!」 というときに最適です。
6. より高度な可視化へ(次へのステップ)
もしもっと高度な可視化やカスタマイズをしたい場合は、以下のような方法もあります。
st.altair_chart:Altair ライブラリを使って柔軟なグラフ描画st.pyplot:Matplotlib のグラフをStreamlitに表示plotly:インタラクティブなグラフの作成
初心者の方でも、今回紹介した st.bar_chart や st.scatter_chart に慣れてから段階的にレベルアップしていけばOKです!
7. 参考リンク
最後に書籍のPRです。
24年9月に出版された「ハイパーモダンPython-信頼性の高いワークフローを構築するモダンテクニック」、Claudio Jolowicz著、嶋田、鈴木訳。開発環境の構築、プロジェクトの管理、テストに関して実践的な内容でとても参考になる一冊です。ぜひ手に取ってみてください。
最後まで読んでいただきありがとうございます。


コメント