【Streamlit】棒グラフと散布図:st.bar_chart, st.scatter_chartでグラフを描こう!

Streamlit
この記事は約6分で読めます。

こんにちは、JS2IIUです。
Streamlitでグラフを描画する方法を説明していきます。今回は棒グラフと散布図についてみていきます。よろしくお願いします。

1. はじめに

データ分析やアプリ開発を行う上で、「視覚的にわかりやすくデータを表示する」ことはとても重要です。特に、数値の推移や分布を一目で把握できるグラフは、分析結果を伝える上で欠かせません。

本記事では、Python製のWebアプリフレームワーク Streamlit を使って、棒グラフ(bar chart)散布図(scatter plot) を簡単に描画する方法をご紹介します。使うのは、Streamlit に標準搭載されている便利な関数 st.bar_chartst.scatter_chart です。

2. Streamlit とは?

Streamlit は、Python のコードだけで簡単にインタラクティブな Web アプリを作れるライブラリです。インストールも簡単で、データサイエンスや機械学習との相性も抜群です。

インストール方法(簡単おさらい)

Bash
pip install streamlit

アプリの起動方法

Pythonファイル(例: app.py)を作成して、以下のコマンドで起動します。

Bash
streamlit run app.py

それでは早速、棒グラフの描き方から見ていきましょう。

3. 棒グラフ(st.bar_chart)の使い方

3.1 ステップ1:基本の棒グラフを描く

まずは最もシンプルな棒グラフを描いてみましょう。

Python
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軸に表示するようにしてみましょう。

Python
days = ["Mon", "Tue", "Wed", "Thu", "Fri"]

data.index = days
st.bar_chart(data)

解説:

  • data.index = days でX軸のラベルをカスタマイズできます
  • より意味のあるグラフになりますね

3.3 カスタマイズのポイント

st.bar_chart はシンプルな関数なので、細かいスタイル調整(色、ラベルの位置など)はできません。より自由度の高いグラフが必要な場合は、st.altair_chartst.pyplot などの関数を検討しましょう。

4. 散布図(st.scatter_chart)の使い方

散布図は、2つ以上の数値データの相関関係を見るのに適したグラフです。

4.1 ステップ1:基本の散布図を描いてみよう

Python
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を使っています
  • xyのカラムが それぞれX軸とY軸に 自動的にマッピングされます
  • z カラムは 点の大きさや色の強さに反映 される場合があります

4.2 ステップ2:軸のカラムを選んで描く

例えば、明示的に必要なカラムだけ選んで渡すこともできます。

Python
selected = data[["x", "y"]]
st.scatter_chart(selected)

4.3 use_container_width=True を使ってみよう

グラフの横幅を画面いっぱいに広げたい場合は、以下のようにします。

Python
st.scatter_chart(selected, use_container_width=True)

5. st.bar_chart と st.scatter_chart の違いと使い分け

項目st.bar_chartst.scatter_chart
用途カテゴリ別の数量比較2変数・3変数の相関関係の可視化
入力データの形式DataFrame(複数列)DataFrame(2〜3列)
X軸インデックス自動的に最初の列がX軸になる
カスタマイズ性限定的(簡単に描ける)限定的(詳細調整は不可)
難易度非常にやさしいやさしい

どちらも非常にシンプルに使える関数なので、「とにかく素早くグラフを描きたい!」 というときに最適です。

6. より高度な可視化へ(次へのステップ)

もしもっと高度な可視化やカスタマイズをしたい場合は、以下のような方法もあります。

  • st.altair_chart:Altair ライブラリを使って柔軟なグラフ描画
  • st.pyplot:Matplotlib のグラフをStreamlitに表示
  • plotly:インタラクティブなグラフの作成

初心者の方でも、今回紹介した st.bar_chartst.scatter_chart に慣れてから段階的にレベルアップしていけばOKです!

7. 参考リンク

最後に書籍のPRです。
24年9月に出版された「ハイパーモダンPython-信頼性の高いワークフローを構築するモダンテクニック」、Claudio Jolowicz著、嶋田、鈴木訳。開発環境の構築、プロジェクトの管理、テストに関して実践的な内容でとても参考になる一冊です。ぜひ手に取ってみてください。

最後まで読んでいただきありがとうございます。

コメント

タイトルとURLをコピーしました