🐕

Streamlitで世界の太陽光発電所情報を可視化

に公開

動的な描画が簡単にできるstreamlit

streamlitは、動的な描画をブラウザ上に簡単に作成できるツールです。特に、他の描画ツールよりも作法が簡単になっていて扱いやすくなっています。本記事ではstreamlitの機能を、世界の太陽光発電所の位置と発電容量を可視化する事例とあわせて紹介します。

はじめに

streamlitを用いることで、数行のコードでデータを可視化し、動的な描画を作成できます。
今回は、世界の太陽光発電所のデータを使用して、その位置と発電容量を地図上にプロットしていきます。

必要なライブラリのインストール

今回の例では、以下のライブラリを使用します。

pip install streamlit pandas folium streamlit-folium

データの準備

import streamlit as st
import pandas as pd
import folium
from streamlit_folium import st_folium


# データの読み込み
power_plant_data = pd.read_csv('global_power_plant_database.csv', dtype={'other_fuel1': str, 'other_fuel2': str})

# 太陽光発電所のデータをフィルタリング
solar_plants = power_plant_data[power_plant_data['primary_fuel'] == 'Solar']

# 緯度と経度のカラムを持つデータフレームを作成
# NaNを除外する
df = solar_plants[['latitude', 'longitude']].dropna()

地図上に可視化してみる

# Streamlitアプリケーションの設定
st.title('世界の太陽光発電所の地図可視化')

# データフレームの表示
st.write('太陽光発電所のデータフレーム:')
st.dataframe(solar_plants[['name', 'country', 'capacity_mw', 'latitude', 'longitude']])

# 地図の表示
st.write('地図表示:')
m = folium.Map(location=[0, 0], zoom_start=2)

# 各発電所の位置を地図上にプロット
for i, row in solar_plants.iterrows():
    if pd.notnull(row['latitude']) and pd.notnull(row['longitude']):
        folium.CircleMarker(
            location=[row['latitude'], row['longitude']],
            radius=row['capacity_mw'] / 10,  # 発電容量に基づくサイズ
            popup=row['name'],
            color='green',
            fill=True,
        ).add_to(m)

st_folium(m, width=700, height=500)

アプリケーションの実行

上記のコードを app_20240717.py として保存し、以下のコマンドを実行してStreamlitアプリケーションを起動。

streamlit run app_20240717.py

ブラウザが自動的に開き、以下のような地図が表示されます。


地図の解釈

今回は、世界の太陽光発電所の地理的分布と発電容量を視覚的に表現。

  • 円の位置: 各円の中心は、発電所の緯度と経度に対応。
  • 円のサイズ: 円の半径は、その発電所の発電容量(MW)に比例。大きな円は大規模な発電所を、小さな円は小規模な発電所を示す。
  • ポップアップ: 各円をクリックすると、その発電所の名前が表示。

Streamlitの使いやすさ・すごさ

簡単なインターフェース

上記のように、Streamlitはシンプルなコードで動的な描画ができるツールです。
複雑な知識がなくても、データの視覚化や操作を行うことができました。

リアルタイムの更新

今回は実装しませんでしたが、Streamlitにはデータやパラメータの変更に応じてリアルタイムでアプリケーションを更新する機能もあります。

豊富な機能

Streamlitを使うことで、スライダー、テキスト入力、ボタンなど、様々な動的な機能をつけることができます。

ビジュアライゼーション

Streamlitは、Matplotlib、Altair、Plotly、Foliumなどのビジュアライゼーションライブラリと統合でき、豊富なグラフや地図を簡単に作成できます。今回の例では、Foliumを使用して地図を描画しました。

まとめ

Streamlitを使うことで、データの視覚化における動的な描画を行うのが非常に簡単になります。コードの簡易性により扱いやすくなっているうえ、可読性も向上するのでおすすめです。

Discussion