#やりたいこと
pythonで、背景図・コンター図・ベクトル図・カラープロット図の4種類の図を重ね合わせます。背景図はshpファイル、コンター図、ベクトル図、カラープロット図はいずれも2次元グリッドデータを用います。
#背景図
背景図の読み込み、描画はgeopandasで簡単にできます。なお、geopandasをpipでインストールする際は、先にGDAL、Fionaをインストールしておかないとうまくいきませんでした。
import geopandas as gpd
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
#--1.背景図描画-------------------
shapefile='line.shp'
data = gpd.read_file(shapefile)
ax.set_xlim([-100000,0])
ax.set_ylim([-120000,-60000])
data.plot(ax=ax, color='black')
#-------------------------------
plt.show()
#カラーコンター図
メッシュデータを読み込み、pcolormeshでカラーコンターを描画します。カラーコンターの上から、上記の背景図に重ねます。
import geopandas as gpd
import matplotlib.pyplot as plt
from matplotlib.colors import Normalize
import numpy as np
from matplotlib.cm import ScalarMappable
#
# (データ読み込み⇒X,Y,Z):省略
fig, ax = plt.subplots()
#--2.カラーメッシュ描画-------------------------------
fig, ax = plt.subplots()
norm = Normalize(vmin=-500,vmax=2000)
map = ax.pcolormesh(X,Y,Z, cmap='rainbow', norm=norm)
#
sm = ScalarMappable(cmap='rainbow', norm=norm)
sm.set_clim(-500,2000)
pp = fig.colorbar(sm,orientation='horizontal')
#----------------------------------------------------
#1.背景図描画:同上・省略
plt.show()
#コンター図
上記のメッシュデータからコンター図を作成し、重ねて表示します。
# (モジュールインポート):同上・省略
# (データ読み込み⇒X,Y,Z):省略
fig, ax = plt.subplots()
#2.カラーメッシュ描画:同上・省略
#--3.コンター図描画-----------------------------------
cont=ax.contour(X,Y,Z, 100, colors=['purple'])
#----------------------------------------------------
#1.背景図描画:同上・省略
plt.show()
#ベクトル図
最後にベクトル図を重ねます。ベクトルは、地形の勾配としました。
# (モジュールインポート):同上・省略
# (データ読み込み⇒X,Y,Z):省略
fig, ax = plt.subplots()
#2.カラーメッシュ描画:同上・省略
#3.コンター図描画:同上・省略
cont=ax.contour(X,Y,Z, 100, colors=['purple'])
#--4.ベクトル図描画-----------------------------------
# (ベクトル定義⇒U,V):省略
vect=ax.quiver(X,Y,U,V,color='grey',angles='xy',scale_units='xy', scale=0.0001)
ax.quiverkey(vect,0.0,1.1,1.0,'slope')
#----------------------------------------------------
#1.背景図描画:同上・省略
plt.show()