📈

Pythonでグラフマスター!

に公開

📊 【プログラミング初心者向け】Python Streamlit x matplotlibで作るオーストラリアデータ可視化アプリ

データ可視化の基本から応用まで、楽しく学んでみませんか?今回は、Python で Streamlit と matplotlib を使って、オーストラリアのデータを美しいグラフで表現するアプリを作成します。線グラフ、棒グラフ、散布図、ヒストグラムなど、様々なグラフタイプを実際に作成しながら、データ可視化の技術を身につけていきましょう。
読み進めていくと、コード量が多く感じるかもしれませんが、可読性向上目的で改行を多用しているためですので!

データ可視化、グラフ作成、インタラクティブアプリまで含む本格的なデータ分析アプリを、ステップバイステップで学んでいきましょう。

🌟 この記事を読めば...

データ可視化とグラフ作成の技術を学べます 🎯

この記事では、単なるグラフ作成だけでなく、データ可視化の基本から応用まで徹底的に学べます。例えば:

  • matplotlibを使った美しいグラフ作成
  • 様々なグラフタイプの使い分け
  • インタラクティブなデータ可視化アプリ
  • グラフのダウンロード機能

💡 そもそもデータ可視化って❓

**データ可視化(Data Visualization)**は、データを視覚的に表現して理解しやすくする技術です。

  • 複雑なデータをグラフやチャートで表現
  • データの傾向やパターンを直感的に理解
    🎯 今回の例:
  • オーストラリアのカンガルー数、気温、ビーチデータを美しいグラフで表現

📁 フォルダとファイルの作成

1. フォルダ構造

australia-data-graph-project/
├── graph.py
└── requirements.txt

2. 必要なライブラリをインストール

まず、requirements.txtファイルに以下を書きます:

streamlit>=1.28.0
pandas>=2.0.0
matplotlib>=3.7.0
numpy>=1.24.0

これで、プロジェクトの準備が整いました!

⚡ オーストラリアデータ可視化アプリを作ってみよう

さっそく、graph.py にコードを書いていきましょう!

1️⃣📱 アプリの基本設定とライブラリのインポート

まずは、アプリの基本設定と必要なライブラリのインポートから始めます。

# 必要なライブラリをインポート
import streamlit as st  # Webアプリ作成用
import pandas as pd     # データ処理用
import matplotlib.pyplot as plt  # グラフ作成用
import matplotlib.font_manager as fm  # フォント管理用
import numpy as np      # 数値計算用
from io import BytesIO  # ファイル操作用
import base64          # エンコード用

# 日本語フォントの設定(文字化け対策)
def setup_japanese_font():
    """日本語フォントを設定する関数"""
    try:
        # Windows用の日本語フォント設定
        # 複数のフォントを指定して、利用可能なフォントを自動選択
        plt.rcParams['font.family'] = ['DejaVu Sans', 'Hiragino Sans', 'Yu Gothic', 'Meiryo', 'Takao', 'IPAexGothic', 'IPAPGothic', 'VL PGothic', 'Noto Sans CJK JP']
        plt.rcParams['axes.unicode_minus'] = False  # マイナス記号の文字化け対策
    except:
        st.warning("⚠️ 日本語フォントの設定に失敗しました。一部の文字が正しく表示されない可能性があります。")

# ページ設定
st.set_page_config(
    page_title="オーストラリアデータ可視化",  # ブラウザのタブに表示されるタイトル
    page_icon="📊",          # ブラウザのタブに表示されるアイコン
    layout="wide",           # レイアウトをワイドに設定
)

# 日本語フォント設定
setup_japanese_font()

# タイトルとヘッダー
st.title("📊 オーストラリアデータ可視化体験")
st.markdown("---")  # 区切り線

st.success("""
🎉 **G'day mate! オーストラリアのデータで楽しく学ぼう!**
- 📊 美しいグラフを作成
- 💾 作成したグラフはダウンロード可能!
""")

cursor のターミナルで以下のコマンドを実行して画面表示を確認しましょう!

python -m streamlit run graph.py

📝 日本語フォント設定の詳細説明:

🔍 なぜ日本語フォント設定が必要?

  1. 文字化け防止

    • デフォルトではMatplotlibは日本語を正しく表示できません
    • グラフのタイトルや軸ラベルが文字化けしてしまいます
  2. 複数フォントのフォールバック

    • OSによって利用可能なフォントが異なります
    • 複数のフォントを指定することで、環境に依存せず動作します
  3. マイナス記号対策

    • axes.unicode_minus = Falseで、マイナス記号の文字化けを防止
    • 数値の負の値を正しく表示できます

🎯 設定のポイント:

  • Windows/Mac/Linuxで共通して使える日本語フォントを優先的に指定
  • フォント設定に失敗した場合のエラーハンドリングを実装
  • try-except文で安全に処理

2️⃣🦘 サンプルデータの準備

オーストラリアらしいデータを準備します。シンプルで分かりやすい4つのデータセットを作成しましょう!
※データセットの中身が多いので折りたたんでいます。

データセット
# サンプルデータの準備
@st.cache_data  # キャッシュデコレータ:データセットを一度だけ作成する
def create_sample_data():
    """オーストラリアのサンプルデータを作成する関数"""
    
    # オーストラリアの州別カンガルー数データ
    states = ['NSW', 'VIC', 'QLD', 'WA', 'SA', 'TAS', 'NT', 'ACT']
    kangaroo_data = {
        '州': states,
        'カンガルー数(万頭)': [850, 230, 1800, 1100, 320, 80, 150, 15],
        '人口密度(人/km²)': [9.4, 28.5, 2.8, 1.0, 1.7, 7.8, 0.2, 171.4],
        '面積(万km²)': [80.9, 22.7, 172.7, 252.9, 98.3, 6.8, 134.9, 0.2]
    }
    
    # オーストラリアの月別気温データ(主要都市)
    months = ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']
    temperature_data = {
        '月': months,
        'シドニー(℃)': [26, 26, 25, 23, 20, 17, 17, 18, 20, 22, 24, 26],
        'メルボルン(℃)': [26, 26, 24, 20, 17, 14, 14, 15, 17, 20, 22, 24],
        'ブリスベン(℃)': [29, 29, 28, 26, 23, 21, 21, 22, 24, 26, 28, 29],
        'パース(℃)': [32, 32, 30, 26, 22, 19, 18, 19, 21, 24, 27, 30]
    }
    
    # オーストラリアのビーチ人気ランキング
    beaches = ['ボンダイビーチ', 'ホワイトヘブンビーチ', 'サーファーズパラダイス', 'マンリービーチ', 'バイロンベイ', 'フレーザー島']
    beach_data = {
        'ビーチ名': beaches,
        '観光客数(万人/年)': [250, 180, 220, 150, 120, 80],
        '美しさ評価(5点満点)': [4.8, 4.9, 4.5, 4.6, 4.7, 4.4],
        'サーフィン適性(5点満点)': [4.5, 3.8, 4.8, 4.2, 4.6, 4.0]
    }
    
    # オーストラリアの野生動物データ
    animals = ['カンガルー', 'コアラ', 'ワラビー', 'エミュー', 'ディンゴ', 'ウォンバット', 'カモノハシ', 'タスマニアデビル']
    wildlife_data = {
        '動物名': animals,
        '生息数(万頭)': [4500, 80, 1200, 75, 25, 30, 5, 15],
        '危険度(5点満点)': [2.0, 1.0, 1.5, 2.5, 3.5, 1.0, 2.0, 1.5]
    }
    
    # 各データセットをpandasのDataFrameに変換して辞書形式で返す
    return {
        'kangaroo': pd.DataFrame(kangaroo_data),
        'temperature': pd.DataFrame(temperature_data),
        'beaches': pd.DataFrame(beach_data),
        'wildlife': pd.DataFrame(wildlife_data)
    }

📝 データセット管理・キャッシュの詳細説明:

  • @st.cache_data でデータセットの再作成を防止し、アプリの高速化・安定化を実現します。
  • pd.DataFrame() で辞書形式のデータをpandasのDataFrameに変換し、データ分析に適した形式にします。

3️⃣📊 グラフ作成関数の実装

様々なグラフタイプを作成する関数を実装します!

# ===== グラフ作成関数 =====
#  線グラフ 
def create_line_chart(data, x_col, y_col): #data:データフレーム、x_col:x軸の列名、y_col:y軸の列名
    fig, ax = plt.subplots(figsize=(10, 6)) #グラフのサイズを幅10インチ、高さ6インチに設定
    # 線グラフの作成:marker='o'で点を表示、linewidth=2で線の太さを設定、markersize=6で点のサイズを設定、color='blue'で線の色を設定
    ax.plot(data[x_col], data[y_col], marker='o', linewidth=2, markersize=6, color='blue')
    ax.set_xlabel(x_col, fontsize=12)  # x軸のラベル設定
    ax.set_ylabel(y_col, fontsize=12)  # y軸のラベル設定
    ax.grid(True, alpha=0.3)  # グリッド線を表示(透明度0.3)
    ax.tick_params(axis='x', rotation=45)  # x軸のラベルを45度回転
    plt.tight_layout()  # レイアウトを自動調整
    return fig

#  棒グラフ 
def create_bar_chart(data, x_col, y_col):
    fig, ax = plt.subplots(figsize=(10, 6))
    # 棒グラフの作成:alpha=0.7で透明度を設定、color='skyblue'で棒の色を設定
    bars = ax.bar(data[x_col], data[y_col], color='skyblue', alpha=0.7)
    ax.set_xlabel(x_col, fontsize=12)  # x軸のラベル設定
    ax.set_ylabel(y_col, fontsize=12)  # y軸のラベル設定
    ax.grid(True, alpha=0.3, axis='y')  # y軸方向のみグリッド線を表示
    ax.tick_params(axis='x', rotation=45)  # x軸のラベルを45度回転
    
    # 棒グラフの上に値を表示
    for bar in bars:
        height = bar.get_height()  # 棒の高さを取得
        # 棒の上に数値を表示(位置とフォーマットを調整)
        ax.text(bar.get_x() + bar.get_width()/2., height + height*0.01,
                f'{height:.0f}', ha='center', va='bottom')
    
    plt.tight_layout()  # レイアウトを自動調整
    return fig

#  散布図 
def create_scatter_plot(data, x_col, y_col):
    fig, ax = plt.subplots(figsize=(10, 6))
    # 散布図の作成:alpha=0.6で透明度を設定、color='blue'で点の色を設定
    ax.scatter(data[x_col], data[y_col], alpha=0.6, color='blue')
    ax.set_xlabel(x_col, fontsize=12)  # x軸のラベル設定
    ax.set_ylabel(y_col, fontsize=12)  # y軸のラベル設定
    ax.grid(True, alpha=0.3)  # グリッド線を表示(透明度0.3)
    plt.tight_layout()  # レイアウトを自動調整
    return fig

#  ヒストグラム 
def create_histogram(data, column, bins=20):
    fig, ax = plt.subplots(figsize=(10, 6))
        # ヒストグラムの作成:binsでビンの数を指定、edgecolorで境界線の色を設定
    ax.hist(data[column], bins=bins, color='lightblue', alpha=0.7, edgecolor='black')
    ax.set_xlabel(column, fontsize=12)  # x軸のラベル設定
    ax.set_ylabel('頻度', fontsize=12)  # y軸のラベル設定
    ax.grid(True, alpha=0.3)  # グリッド線を表示(透明度0.3)
    plt.tight_layout()  # レイアウトを自動調整
    return fig

#  複合グラフ 
def create_subplot_example(data):   
    # 2x2のサブプロットを作成:figsize=(15, 12)で全体のサイズを設定、2,2で2行2列のサブプロットを作成
    fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2, figsize=(15, 12))
    
    # 1. カンガルー数の棒グラフ(ax1)
    bars = ax1.bar(data['kangaroo']['州'], data['kangaroo']['カンガルー数(万頭)'], color='orange', alpha=0.7)
    ax1.set_title('🦘 州別カンガルー数', fontweight='bold')  # fontweight='bold'で太字に設定
    ax1.set_xlabel('州')
    ax1.set_ylabel('カンガルー数(万頭)')
    ax1.grid(True, alpha=0.3, axis='y')  # グリッド線を表示(透明度0.3)、y軸方向のみ表示
    ax1.tick_params(axis='x', rotation=45)  # x軸のラベルを45度回転
    
    # 2. シドニーの気温推移
    ax2.plot(data['temperature']['月'], data['temperature']['シドニー(℃)'], marker='o', color='blue', linewidth=2)
    ax2.set_title('🌡️ シドニーの月別気温', fontweight='bold')  # fontweight='bold'で太字に設定
    ax2.set_xlabel('月')
    ax2.set_ylabel('気温(℃)')
    ax2.grid(True, alpha=0.3)  # グリッド線を表示(透明度0.3)
    ax2.tick_params(axis='x', rotation=45)  # x軸のラベルを45度回転
    
    # 3. ビーチの美しさvsサーフィン適性
    ax3.scatter(data['beaches']['美しさ評価(5点満点)'], data['beaches']['サーフィン適性(5点満点)'], alpha=0.6, color='green')
    ax3.set_title('🏖️ ビーチの美しさvsサーフィン適性', fontweight='bold')  # fontweight='bold'で太字に設定
    ax3.set_xlabel('美しさ評価(5点満点)')
    ax3.set_ylabel('サーフィン適性(5点満点)')
    ax3.grid(True, alpha=0.3)  # グリッド線を表示(透明度0.3)
    
    # 4. 野生動物の危険度分布
    ax4.hist(data['wildlife']['危険度(5点満点)'], bins=8, color='red', alpha=0.7, edgecolor='black')
    ax4.set_title('🦘 野生動物の危険度分布', fontweight='bold')
    ax4.set_xlabel('危険度(5点満点)')
    ax4.set_ylabel('頻度')
    ax4.grid(True, alpha=0.3)
    
    plt.tight_layout()  # レイアウトを自動調整
    return fig

📝 グラフ作成関数の詳細説明:

🔍 matplotlibの基本構造:

  1. plt.subplots():グラフと軸(axes)を作成
  2. fig:グラフ全体を格納する入れ物。タイトルやサイズなどの設定を管理する
  3. ax:実際のグラフを描く軸

線グラフの例

📊 各グラフタイプの特徴:

  • 線グラフ:時系列データや連続的な変化を表現
  • 棒グラフ:カテゴリ別の比較や順位を表現
  • 散布図:2つの変数間の関係や相関を分析
  • ヒストグラム:データの分布や頻度を確認
  • 複合グラフ:複数の視点からデータを同時に分析

📝 plt.tight_layout()の重要性:

  • グラフの要素(タイトル、軸ラベル、凡例)が重ならないように自動調整してくれます!
  • これにより美しいレイアウトを実現

📝 `ヒストグラフについて
🔍 ヒストグラムの詳細:

  1. ビン(bins)とは:

    • データを等間隔の区間(ビン)に分割して頻度を集計
    • bins=8は8個の区間に分割することを指定
    • ビンの数が少なすぎると詳細が失われ、多すぎるとノイズが目立つ
  2. パラメータの意味:

    • color='red':棒の色を赤に設定
    • alpha=0.7:透明度を0.7に設定(1が不透明、0が透明)
    • edgecolor='black':棒の枠線を黒に設定
  3. 使用シーン:

    • データの分布形状を視覚化
    • 外れ値や異常値の検出
    • 正規分布との比較

📝 複合グラフについて

🔍 サブプロットの詳細:

  1. サブプロットとは:

    • 1つの図に複数のグラフを配置する手法
    • plt.subplots(2, 2)のように行数と列数を指定
  2. パラメータの意味:

    • ax1, ax2, ax3, ax4:各サブプロットの軸オブジェクト
    • plt.tight_layout():サブプロット間の間隔を自動調整
  3. 使用シーン:

    • 複数の視点からデータを同時に分析
    • 異なるグラフタイプを組み合わせて表現
    • データ間の関係性を一目で把握
  4. サブプロットの利点:

    • 複数のグラフを効率的に比較
    • スペースを効率的に使用
    • 一貫性のある分析が可能
  5. 実装のポイント:

    • グラフ間で統一感を持たせる(色使い、スケールなど)
    • 適切な間隔とサイズ調整
    • 各グラフに明確なタイトルと説明を付ける

4️⃣💾 ダウンロード機能の実装

作成したグラフをダウンロードできる機能を実装します。

# ダウンロードリンクを作成する関数
def get_download_link(fig, filename, text):
    buf = BytesIO() # メモリ上でバイナリデータを扱うためのクラス
    # グラフをPNG形式で保存:dpi=300で高解像度、bbox_inches='tight'で余白を調整
    fig.savefig(buf, format='png', dpi=300, bbox_inches='tight')
    buf.seek(0)  # バッファの位置を先頭に戻す
    # base64エンコード:バイナリデータをテキストに変換
    b64 = base64.b64encode(buf.getvalue()).decode()
    # HTMLのダウンロードリンクを作成:hrefでダウンロードリンクを作成、downloadでダウンロードファイル名を設定、textでダウンロードリンクのテキストを設定
    href = f'<a href="data:image/png;base64,{b64}" download="{filename}">{text}</a>'
    return href

📝 ダウンロード機能の詳細説明:

🔍 ダウンロード処理の流れ:

  1. BytesIO():一時的なメモリ領域を作成してデータを保存
  2. fig.savefig():グラフをPNG形式で保存
  3. base64.b64encode():バイナリデータ(0と1の羅列)をテキストデータ(アルファベットや数字)に変換して、HTMLのダウンロードリンクで使えるようにします
  4. HTMLリンク生成:ダウンロード可能なリンクを作成

📊 保存オプションの説明:

  • format='png':PNG形式で保存
  • dpi=300:高解像度(300dpi)で保存
  • bbox_inches='tight':グラフ周りの余白(タイトル、軸ラベル、凡例などの周辺スペース)を最小限に調整

5️⃣🎨 サイドバーやグラフ作成前準備画面の実装

サイドバーで作成するグラフやデータを選択できるようにします。
また、どのグラフを選択すべきかわかりやすいようにヒントを画面に表示します。

# サンプルデータの取得
sample_data = create_sample_data()

# サイドバーでグラフタイプを選択
st.sidebar.header("📈 グラフタイプ選択")
graph_type = st.sidebar.selectbox(
    "作成したいグラフを選択してください",
    ["線グラフ", "棒グラフ", "散布図", "ヒストグラム", "複合グラフ"]
)

# データセット選択
st.sidebar.header(" オーストラリアデータセット選択")
dataset = st.sidebar.selectbox(
    "使用するデータセットを選択してください",
    ["カンガルーデータ", "気温データ", "ビーチデータ", "野生動物データ"]
)

# ヒントとコツ
st.markdown("---")
st.header("💡 グラフ作成のヒント")

# 各グラフタイプの使用場面とコツを説明
tips = {
    "線グラフ": "📈 時系列データや連続的な変化を表現するのに適しています。気温の推移などに最適!",
    "棒グラフ": "📊 カテゴリ別の比較や順位を表現するのに適しています。州別カンガルー数などに使用しましょう!",
    "散布図": "🔍 2つの変数間の関係や相関を分析するのに適しています。ビーチの美しさとサーフィン適性の関係など!",
    "ヒストグラム": "📊 データの分布や頻度を確認するのに適しています。野生動物の危険度分布など!",
    "複合グラフ": "🎭 複数の視点からオーストラリアのデータを同時に分析できます!"
}

# 各グラフタイプのヒントを表示
for graph, tip in tips.items():
    st.info(f"**{graph}**: {tip}")

# データセット選択を辞書で管理
# サイドバーで選択されたデータセット名を内部的なキーに変換
dataset_mapping = {
    "カンガルーデータ": "kangaroo",
    "気温データ": "temperature", 
    "ビーチデータ": "beaches",
    "野生動物データ": "wildlife"
}
# 選択されたデータセットをcurrent_dataに格納
current_data = sample_data[dataset_mapping[dataset]]

実際にサイドバーでグラフタイプとデータセットを選択してみましょう!

📝 コードの詳細説明:

  • サイドバー実装

    • st.sidebar.selectbox()で選択ボックスを作成
    • グラフタイプとデータセットの選択できるようにしています
  • データセット管理

    • dataset_mappingで表示名と内部キーを紐付け
    • 選択されたデータセットをcurrent_dataに格納しています

6️⃣🎨 メインアプリケーションの実装

ここまで、サンプルデータの準備や関数の定義などをしてきました。
ここから定義したグラフ作成関数を呼んで実際に画面にグラフを表示させていきます!

st.markdown("---") # 区切り線
st.header("🎨 グラフ作成")

# 線グラフ、棒グラフ、散布図の共通処理
if graph_type in ["線グラフ", "棒グラフ", "散布図"]:
    # 2つのカラムを作成:幅を[1:1]で比率を設定
    col1, col2 = st.columns([1, 1])
    with col1:
        # tolist()はPandasの要素をリストに変換するメソッド
        # selectboxで使用できるようにcurrent_data.columnsをリストに変換
        x_column = st.selectbox("X軸", current_data.columns.tolist())
    with col2:
        # x_column同様にcurrent_data.columnsをリストに変換
        y_column = st.selectbox("Y軸", current_data.columns.tolist())
    
    # グラフ作成ボタン
    if st.button(f"📊 {graph_type}を作成", type="primary"):
        # グラフタイプに応じて、上で定義した関数を呼び出し
        if graph_type == "線グラフ":
            fig = create_line_chart(current_data, x_column, y_column)
            filename = "line_chart.png" # ダウンロードファイル名
        elif graph_type == "棒グラフ":
            fig = create_bar_chart(current_data, x_column, y_column)
            filename = "bar_chart.png" # ダウンロードファイル名
        elif graph_type == "散布図":
            fig = create_scatter_plot(current_data, x_column, y_column)
            filename = "scatter_plot.png" # ダウンロードファイル名
        
        # グラフを表示
        st.pyplot(fig)
        # ダウンロードリンクを生成
        # get_download_link関数を使用して、グラフ(fig)、ファイル名、ダウンロードボタンのテキストを指定
        # unsafe_allow_html=Trueで HTMLタグを実際に実行する
        st.markdown(get_download_link(fig, filename, f"📥 {graph_type}をダウンロード"), unsafe_allow_html=True)

# ヒストグラムの処理
elif graph_type == "ヒストグラム":
    # 数値型の列のみを選択肢として表示:select_dtypes(include=[np.number])で数値型の列のみを選択、columns.tolist()で列名をリストに変換
    column = st.selectbox("分析する列を選択", current_data.select_dtypes(include=[np.number]).columns.tolist())
    # ビンの数をスライダーで調整可能に:5から50までの範囲で20ステップで調整可能
    bins = st.slider("ビンの数", 5, 50, 20, help="データを何個のグループに分けるかを設定します")
    
    if st.button(f"📊 {graph_type}を作成", type="primary"):
        fig = create_histogram(current_data, column, bins)
        st.pyplot(fig)
        st.markdown(get_download_link(fig, "histogram.png", f"📥 {graph_type}をダウンロード"), unsafe_allow_html=True)

# 複合グラフの処理
elif graph_type == "複合グラフ":
    st.info(" オーストラリアの様々なデータを組み合わせた表示例です!")
    
    if st.button(f"📊 {graph_type}を作成", type="primary"):
        fig = create_subplot_example(sample_data)
        st.pyplot(fig)
        st.markdown(get_download_link(fig, "aussie_subplot_example.png", f"📥 {graph_type}をダウンロード"), unsafe_allow_html=True)

実際にグラフを作成してみましょう!ダウンロードボタンも押してみてくださいね!!パソコンのダウンロードフォルダにグラフが保存されるはずです!

📝 グラフ作成機能の詳細説明:
共通処理について
グラフ作成の処理には、以下のような共通のパターンがあります:

  1. データと軸の選択

    • ユーザーがX軸とY軸のデータを選択
    • current_data.columns.tolist()で列名をリストに変換し、選択肢として提供
  2. グラフ作成ボタン

    • st.button()でグラフ作成のトリガーを提供
    • ボタンクリック時にのみグラフを生成(処理の効率化)
  3. グラフ表示とダウンロード

    • st.pyplot()でグラフを画面に表示
    • get_download_link()でダウンロード機能を提供
      そのため、線グラフ、棒グラフ、散布図は処理をまとめて書き、変数をうまく利用することで、選択されたグラフによって表示が異なるようにしました。
      ヒストグラムと複合グラフは少し異なるので、別で処理を書いています。

tolist()の必要性
tolist()メソッドが必要な理由:

  • pandas の columns 属性は pandas 独自の Index オブジェクトという特殊な形式で列名を管理しています
  • Streamlit の selectbox は Python のリストを期待している
  • tolist()Index をリストに変換することで互換性を確保

Streamlitでの表示

  • st.pyplot(fig) でグラフを画面に表示

🎉 完成!

おめでとうございます!

今回出来上がった画面はこちらです 👇

実際に様々なデータセットとグラフタイプを組み合わせて可視化を試してみましょう!!

🎯 まとめ:オーストラリアデータ可視化アプリで学んだこと

今回作成したオーストラリアデータ可視化アプリは、以下のような多くの重要な概念が含まれています:

  • データ可視化 - matplotlibを使った美しいグラフ作成
  • インタラクティブアプリ - Streamlitを使ったユーザーフレンドリーなインターフェース
  • ファイル操作 - グラフのダウンロード機能

今回のオーストラリアデータ可視化アプリの特徴:

  • 多様なグラフタイプ - 線グラフ、棒グラフ、散布図、ヒストグラム、複合グラフ
  • インタラクティブ操作 - サイドバーでのグラフタイプとデータセット選択
  • ダウンロード機能 - 作成したグラフの保存

🚀 次のステップ

今回学んだデータ可視化を応用して、以下のような機能を追加してみましょう:

  1. 高度なグラフ - 3Dグラフ、ヒートマップ、箱ひげ図の追加
  2. インタラクティブグラフ - Plotlyを使った動的なグラフ
  3. データフィルタリング - 条件に応じたデータの絞り込み
  4. リアルタイムデータ - APIを使った最新データの取得
  5. 機械学習統合 - 予測結果の可視化機能

データ可視化は、このように少しずつ機能を追加していくことで、どんどん面白くなります!今回学んだmatplotlibとStreamlitは、データ分析の基本中の基本なので、しっかりと理解しておきましょう!


🎓 プログラミング学習におすすめ

プログラミング未経験の方には CyTech(サイテック) がおすすめです!

CyTech は、未経験から IT エンジニアを目指す人向けのオンライン学習プラットフォームで、基礎から実務レベルのスキルを最短 10 ヶ月で習得できるカリキュラムを提供しています。
HTML/CSS/JavaScript/PHP/SQL/Git などのプログラミング言語に加え、デザイン、英語なども学べる総合的なプラットフォームです。
今後随時学習できるプログラミング言語増加予定!
エンジニア学習にお困りの方はまずは CyTech 無料カウンセリングでお悩み解消!

Discussion