Pythonの地図可視化ライブラリ完全ガイド: FoliumからGeoPandasまで

こんにちは、 パイソン コーディングに興味のある皆さん!今日はPythonの地図可視化ライブラリについてご紹介します。 地図でデータを表現すること、素敵だと思いませんか? 皆さんもきっと一度は素敵なインタラクティブな地図を見て、「わぁ、こんなの作れるかな」と思ったことがあるのではないでしょうか?

さあ、心配しないでください!この記事を通してあなたも十分に素敵な地図の可視化を作ることができます。様々なPythonの地図可視化ライブラリを一つ一つ見ていきながら、初心者の方でも簡単にできる例を用意しました。

Folium、GeoPandas、Matplotlib、Plotlyなどの便利なライブラリを知り、実際にコードを書いてみて、地図の可視化の世界に飛び込んでみましょう。

Pythonの地図可視化ライブラリの比較

皆さん、これから紹介するPythonの地図可視化ライブラリを一目で比較しましょう。 各ライブラリの特徴と用途を簡単に把握できるように、下記の表を用意しました。 この表を参考にすると、あなたのプロジェクトに最適なライブラリを選択するのに役立つと思います。

ライブラリ特徴使用事例
フォリウムインタラクティブな地図、使いやすい、Leaflet.jsベース。Webアプリケーション用のインタラクティブな地図作成
ジオパンダ地理空間データ分析、Pandasとの統合地理空間データセットの分析と可視化
Matplotlib高レベルのカスタマイズ、様々な投影法をサポート詳細で静的な地図の視覚化
プロットインタラクティブなビジュアライゼーション、3DおよびWebベースの地図をサポートします。インタラクティブなダッシュボードと3Dマップの構築


この表を見ると、各ライブラリの強みがよくわかりますよね? FoliumはWeb用のインタラクティブな地図を簡単に作成することができ、GeoPandasは地理データ分析に特化しています。 Matplotlibは細かい調整が可能な静的な地図を作成するのに適しており、Plotlyはカラフルなインタラクティブな地図機能と3D地図を作成することができます。

プロジェクトの目的や必要な機能を考慮して、適切なライブラリを選択してください。 時には、複数のライブラリを組み合わせて使用することも良い方法です。 例えば、GeoPandasでデータを分析した後、FoliumやPlotlyで視覚化するなどです。

1.Folium-Pythonの地図の可視化ライブラリ

FoliumはPythonでインタラクティブな地図を作成する際に最もよく使われるライブラリの一つで、Leaflet.jsをベースに作られているので、ウェブブラウザで素敵な地図を表示することができます。

まず、Foliumをインストールしてみましょう。

ピップインストールフォリウム

それでは、簡単な地図を作ってみましょう。 下記のコードを実行すると、ソウル地図を表示するHTMLが生成されますが、そのファイルを開いてみると次のようになります。

파이썬 지도 시각화 라이브러리 - Folium 라이브러리 이용
( 大韓民国の首都ソウルの地図 )
インポートフォリウム

# ソウル緯度と経度
seoul_lat, seoul_lon = 37.5665, 126.9780

# 地図生成
m = folium.Map(location=[seoul_lat, seoul_lon], zoom_start=12)

#マーカー追加
folium.Marker([seoul_lat, seoul_lon], popup='Seoul').add_to(m)

# 地図を保存
m.save('seoul_map.html')

コード解説:

  1. インポートフォリウム: Foliumライブラリをインポートします。
  2. seoul_lat, seoul_lon = 37.5665, 126.9780: ソウルの緯度と経度を変数に保存します。
  3. m = folium.Map(...): Foliumを使用して地図オブジェクトを生成します。 場所は地図の中心座標です、 zoom_startは初期ズームレベルを設定します。
  4. folium.Marker(...): 指定した位置にマーカーを追加します。 ポップアップはマーカーをクリックしたときに表示されるテキストです。
  5. m.save('seoul_map.html')生成された地図をHTMLファイルとして保存します。

そうすると、ソウル中心のインタラクティブな地図が生成されます。素敵でしょう?

2.GeoPandas:地理データ処理の強者

GeoPandasは地理データを扱うことに特化したライブラリです。 Pandasの拡張版だと考えてください。このPythonの地図可視化ライブラリを活用してみます。

GeoPandasのインストールは少し難しいかもしれません。 以下のコマンドでインストールしてみてください。

pip install geopandas

では、GeoPandasを使って簡単な世界地図を描いてみましょう。

GeoPandas로 그린 세계지도 이미지
( GeoPandasで描いた世界地図 )
import geopandas as gpd
matplotlib.pyplot を plt としてインポートします。

# Natural Earthのデータを直接URLから読み込む
url = "https://naciscdn.org/naturalearth/110m/cultural/ne_110m_admin_0_countries.zip"
world = gpd.read_file(url)

# 地図を描く
world.plot(figsize=(15, 10))

# タイトル追加
plt.title('World Map', fontsize=16)

# 地図を保存
plt.savefig('world_map.png')
plt.show()

コード解説:

  1. ジオパンダをgpdとしてインポートする
    • GeoPandasライブラリを「gpd」というエイリアスでインポートします。
    • 地理情報データを処理するためのPythonライブラリです。
  2. matplotlib.pyplot as plt をインポートします。
    • Matplotlibのpyplotモジュールを'plt'というエイリアスでインポートします。
    • Pythonで最も広く使われているデータ可視化ライブラリです。
  3. url = "https://naciscdn.org/naturalearth/110m/cultural/ne_110m_admin_0_countries.zip"
    • Natural Earthが提供する世界地図データのURLを指定します。
    • 110mは1:110,000,000,000縮尺の解像度を意味します。
  4. world = gpd.read_file(url)
    • URLから地理データを直接読み込んでGeoDataFrameとして保存します。
    • 自動的にZIPファイルを処理し、地理データを読み込みます。
  5. world.plot(figsize=(15, 10))
    • 読み込んだ世界地図データを視覚化します。
    • figsize=(15, 10)で横15インチ、縦10インチのサイズに設定します。
  6. plt.title('世界地図', fontsize=16)
    • 地図の上部に「世界地図」というタイトルを追加します。
    • fontsize=16で文字サイズを16ポイントに設定します。
  7. plt.savefig('world_map.png')
    • 生成された地図を'world_map.png'ファイルとして保存します。
    • 現在の作業ディレクトリにPNG形式で保存されます。
  8. plt.show()
    • 生成された地図を画面に表示します。
    • インタラクティブな環境(例えば、Jupiter Notebook)ではインラインで表示されます。
  9. 一般的なPythonスクリプトでは、別のウィンドウに表示されます。

3.Matplotlib: 基本に忠実な可視化

MatplotlibはPythonの基本的な可視化ライブラリで、地図の可視化にも使えます。 ただし、地図データを直接扱わないといけないので少し複雑かもしれません。

必要に応じて ピップインストールベースマップ コマンドでパッケージを追加でインストールする必要があるかもしれません。このPythonマップ可視化ライブラリを活用してみます。

Matplotlib로 그린 세계 지도 이미지
( Matplotlibで描いた世界地図 )
matplotlib.pyplot as plt をインポートします。
mpl_toolkits.basemap from mpl_toolkits.basemap import Basemap

#マップ生成
m = Basemap(projection='mill', llcrnrlat=-90, urcrnrlat=90, llcrnrlon=-180, urcrnrlon=180, resolution='c')

# 海岸線、境界線の描画
m.drawcoastlines()
m.drawcountries()

# 緯度、経度を描画する
m.drawparallels(range(-90, 91, 30), labels=[1,0,0,0,0])
m.drawmeridians(range(-180, 181, 60), labels=[0,0,0,0,1])

# タイトル追加
plt.title('World Map by Matplotlib')

# 地図の保存及び表示
plt.savefig('matplotlib_world_map.png')
plt.show()

コード解説:

  1. mpl_toolkits.basemap from mpl_toolkits.basemap import Basemap: Basemapモジュールをインポートします。
  2. m = ベースマップ(...): 地図オブジェクトを生成します。ここで投影法と地図の範囲を設定します。
  3. m.drawcoastlines(), m.drawcountries()海岸線と国境線を描きます。
  4. m.drawparallels(...), m.drawmeridians(...)緯度線と経度線を描きます。
  5. plt.title(...): 地図にタイトルを追加します。
  6. plt.savefig(...), plt.show()地図を保存し、画面に表示します。

Matplotlibは細かな調整が可能なので、好きなように地図を飾ることができます!

4.Plotly:インタラクティブなビジュアライゼーションの最高峰

Plotlyはインタラクティブなビジュアライゼーションを作ることができる強力なライブラリです。 地図のビジュアライゼーションにもとても便利です。 今回はPlotly Pythonの地図ビジュアライゼーションライブラリを活用してみます。

Plotly 그린 서울 지도
( Plotlyが描いたソウルの地図 )
plotly.graph_objects as goをインポートする

# 地図データ生成
fig = go.Figure(go.Scattermapbox(
    mode = "markers"、
    lon = [126.9780]、
    lat = [37.5665]、
    marker = {'size':20}))

# 地図レイアウトの設定
fig.update_layout(
    mapbox = { 'style': 20
        'style':"open-street-map"、
        'center':{ 'lon':126.9780, 'lat':37.5665}、
        'zoom':10}、
    showlegend = False)

# 地図表示
fig.show()

コード解説:

  1. plotly.graph_objects as goをインポートする: Plotlyのグラフオブジェクトを取得します。
  2. fig = go.Figure(go.Scattermapbox(...)):地図上にマーカーを付けるオブジェクトを生成します。
  3. fig.update_layout(...)地図のスタイル、中心座標、ズームレベルなどを設定します。
  4. fig.show()生成された地図を画面に表示します。

Plotlyで作成された地図は本当に素晴らしいインタラクティブ機能を提供しています。 マウスで地図を拡大して移動することができます!

さあ、皆さん!ここまでPythonの様々な地図可視化ライブラリを調べてみました。 それぞれのライブラリの特徴と長所と短所があります。 Foliumは簡単にインタラクティブな地図を作ることができ、GeoPandasは地理データ分析に強いです。 Matplotlibは細かい調整が可能で、Plotlyは豪華なインタラクティブ機能を提供します。

あなたのプロジェクトやデータに合ったライブラリを選んで使ってみてください。 最初は難しいかもしれませんが、練習を続けると、いつの間にか素敵な地図のビジュアライゼーションを作成している自分を見つけることができます!

ちなみに、地図を見る理由の一つは旅行のためですよね? Python地図の可視化:後悔のない旅行ルートを確認する(feat. folium package) ポストレビューを通して、これから行かれる旅行ルートを一度確認してみてはいかがでしょうか?

#用語解説

  1. 可視化(Visualization):データをグラフィカルに表現することを指します。地図の可視化とは、地理的なデータを地図の形で表現することを意味します。
  2. ライブラリ(Library): プログラミングでよく使われる機能をまとめたコード集です。Pythonでは インポート 文を使ってライブラリを呼び出して使います。
  3. インタラクティブ(Interactive)インタラクティブ:ユーザーと対話できる機能を指します。インタラクティブマップは拡大、縮小、移動などの操作が可能です。
  4. 緯度(Latitude)と経度(Longitude): 地球上の位置を表す座標系です。緯度は赤道を基準に南北方向の角度、経度は本초子午線を基準に東西方向の角度を表します。
  5. マーカー(Marker)地図上に特定の位置を表示する点やアイコンを指します。
  6. ズームレベル(Zoom Level): 地図の拡大度を表す数値です。 数字が大きいほど、より詳細な地図を見ることができます。
  7. 投影法(Projection)3次元の地球を2次元の平面上に表現する方法です。様々な投影法があり、それぞれの長所と短所があります。
테리 이모티콘
( 楽しくコーディングしましょう! )

類似の投稿