【Streamlit】チャートを描画する:st.line_chart入門

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

こんにちは、JS2IIUです。
Streamlitの魅力はグラフを簡単に描画できるところにあると思います。最もベーシックな折れ線グラフについて説明していきます。今回もよろしくお願いします。

1. はじめに

データを視覚的に表現することは、データの傾向や変化を直感的に理解するためにとても重要です。Pythonで手軽にWebアプリを作成できるフレームワーク「Streamlit」には、簡単にチャートを描画する機能が備わっています。

この記事では、Streamlitのst.line_chartを使って、折れ線グラフを簡単に作成する方法をステップバイステップで解説します。

2. st.line_chartとは?

st.line_chartは、Streamlitで提供されているチャート描画関数の一つで、折れ線グラフ(Line Chart)を簡単に描くことができます。

  • データを渡すだけで、軸や凡例を自動的に設定
  • pandas.DataFramenumpy.ndarray など、さまざまなデータ形式に対応
  • インタラクティブなチャート(マウスオーバーで値が確認できる)

手軽さと見やすさが特徴で、初めてのデータ可視化にもぴったりです。

3. Streamlitアプリの基本構成

まずはStreamlitアプリを動かすための準備から始めましょう。

🔧 Step 1:必要なライブラリのインストール

まだインストールしていない場合は、以下のコマンドでStreamlitをインストールします。

Bash
pip install streamlit

🔧 Step 2:Pythonスクリプトの作成

以下のようなファイルを作成します(例:app.py)。

Python
import streamlit as st
import pandas as pd

このように、Streamlitとデータ処理用のPandasを読み込みます。

🔧 Step 3:アプリの実行方法

ターミナルで以下のコマンドを実行すると、Webブラウザでアプリが立ち上がります。

Bash
streamlit run app.py

4. 折れ線グラフの作成ステップ

✅ Step 1:データの準備

まずは、折れ線グラフに表示するデータを用意します。ここでは簡単な売上データを例にします。

Python
import streamlit as st
import pandas as pd

# データの作成
data = pd.DataFrame({
    'Sales': [100, 150, 200, 250, 300],
    'Month': ['Jan', 'Feb', 'Mar', 'Apr', 'May']
})

# 月をインデックスに設定(グラフのX軸に使うため)
data.set_index('Month', inplace=True)

# 折れ線グラフの表示
st.line_chart(data)

このコードを実行すると、「Jan〜May」の5か月分の売上データを折れ線グラフで表示できます。

5. 複数列のグラフ表示

次に、複数のデータ系列を表示するグラフを作成してみましょう。例えば、2つの商品AとBの売上推移を比較するグラフです。

Python
import streamlit as st
import pandas as pd

data = pd.DataFrame({
    'Product A': [100, 120, 130, 140, 150],
    'Product B': [90, 110, 125, 135, 145]
}, index=['Jan', 'Feb', 'Mar', 'Apr', 'May'])

st.line_chart(data)

このように、複数列のDataFrameを渡すだけで、それぞれの系列に自動で凡例が付きます。色分けも自動で行われ、比較がしやすくなります。

6. 実用的な例:日付を使った時系列グラフ

日付を使って、本格的な時系列グラフを描くこともできます。

Python
import streamlit as st
import pandas as pd
import numpy as np

# 日付のインデックスを作成
dates = pd.date_range('2025-01-01', periods=10)

# ランダムなデータを生成
data = pd.DataFrame(
    np.random.randn(10, 2),
    index=dates,
    columns=['Metric A', 'Metric B']
)

st.line_chart(data)

このように、pd.date_rangeを使って日付インデックスを作ることで、実際の時系列データを扱うようなグラフが描けます。

7. よくあるエラーと注意点

st.line_chart を使う際に、初心者が陥りやすいポイントをいくつか紹介します。

⚠️ 非数値の列は表示されない

文字列(カテゴリ値)の列は折れ線グラフに描画できません。数値列のみが対象です。

⚠️ 空のデータは表示できない

DataFrameが空だったり、全てNaNの場合はグラフが描画されません。

⚠️ インデックスの設定に注意

時系列グラフを描きたい場合は、インデックスに日付を設定しましょう。そうしないとX軸に日付が表示されません。

8. まとめ

この記事では、Streamlitのst.line_chartを使って、折れ線グラフを描く基本的な方法を紹介しました。

  • st.line_chartは初心者でも手軽にチャートを作成できる
  • PandasのDataFrameをそのまま使えるので、データ加工がしやすい
  • インデックスや列の構成でX軸・Y軸が自動的に決まる

Streamlitでは、この他にもst.bar_chart(棒グラフ)やst.area_chart(面グラフ)、さらにはaltair_chartpyplotといった高度なチャート機能も使えます。まずはst.line_chartで可視化の基礎に慣れていきましょう!

9. 参考リンク

こちらの記事も参考にしてください

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

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

コメント

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