【Cartopy】月ごとにマップを分割しよう
こんにちは!
今回は月ごとのデータを分割して表示してみたいと思います
基礎
まずは必要なモジュールをインポートします。
import numpy as np #数値計算
import matplotlib.pyplot as plt #描写
グラフを書いていきます
#グラフ領域の用意 縦に3マス横に4マス
fig, axes = plt.subplots(nrows=4, ncols=3,figsize=(20,15))
plt.rcParams["font.size"] = 18 #フォントサイズ一括設定
#全体のタイトル設定(yは縦方向の文字の位置設定)
plt.suptitle("Title", y = 0.95)
#ここから12個グラフを書いていきます
for i, ax in enumerate(axes.flat):
#i番目のaxを用意
ax = plt.subplot(3, 4, i+1)
#データと描写
xdata = np.arange(0,100,1) *1
ydata = np.random.rand(100) *2
ax.plot(xdata, ydata)
ax.set_title(i+1)
plt.show()
# 保存
fig.savefig("XXX.png" ,format="png", dpi=330)
Keys
1) 0~99までの数字の配列(array)を1個おきに作成
2) 0~1までのランダムな数字を100個作成(array)
ランダムウォーク
データをランダムウォークにして描写してみましょう
fig, axes = plt.subplots(nrows=4, ncols=3,figsize=(20,15))
plt.rcParams["font.size"] = 18
plt.suptitle("Title", y = 0.95)
for i, ax in enumerate(axes.flat):
ax = plt.subplot(3, 4, i+1)
xdata = np.arange(0,100,1)
#ランダムウォーク *1
l = 100
step = np.random.choice([-1, 1], l)
ydata = np.cumsum(step)
ax.plot(xdata, ydata)
ax.set_title(i+1)
plt.show()
fig.savefig("XXX.png" ,format="png", dpi=330)
Key
1) ランダムウォーク
Cartopy
まずは必要なモジュールをインポートします。
imporimport matplotlib.pyplot as plt #描写
import cartopy.crs as ccrs #cartopy
import matplotlib.ticker as mticker #緯度経度
#緯度経度線を度数表示にするため
from cartopy.mpl.gridliner import LONGITUDE_FORMATTER, LATITUDE_FORMATTER
import cartopy.feature as cfeature
import numpy as npt numpy as np #数値計算
import matplotlib.pyplot as plt #描写
グラフを書いていきます
fig, axes = plt.subplots(nrows=4, ncols=3,figsize=(20,15))
plt.rcParams["font.size"] = 18
plt.suptitle("Title", y=0.95)
month_names = ["Jan.", "Feb.", "Mar.", "Apr.", "May", "June", "July", "Aug.", "Sept.", "Oct.", "Nov.", "Dec."]
for i, ax in enumerate(axes.flat):
ax = plt.subplot(3, 4, i+1, projection=ccrs.PlateCarree())
ax.set_title(month_names[i])
ax.coastlines(resolution="50m")
ax.add_feature(cfeature.BORDERS, linestyle=":")
ax.stock_img() #地図の色を塗る
gl = ax.gridlines(crs=ccrs.PlateCarree(), draw_labels=True,
linewidth=2, color='gray', alpha=0.5, linestyle=':')
gl.xlabels_top = False
gl.ylabels_right = False
dlon, dlat = 15, 10
xticks = np.arange(-180, 180.1, dlon)
yticks = np.arange(-90, 90.1, dlat)
gl.xlocator = mticker.FixedLocator(xticks)
gl.ylocator = mticker.FixedLocator(yticks)
gl.xformatter = LONGITUDE_FORMATTER
gl.yformatter = LATITUDE_FORMATTER
gl.xlabel_style = {'size': 18}
gl.ylabel_style = {'size': 18}
#表示範囲 *1
ax.set_extent([120-0.5,160+0.5,20-0.5,60+0.5], ccrs.PlateCarree())
#グラフ間の幅 *2
plt.subplots_adjust(wspace=0.2, hspace=0.2)
fig.savefig("XXX.png" ,format="png", dpi=330)
Keys
1) 表示範囲の緯度経度よりほんの少しだけ大きくしないと、度数目盛が表示されないことがあります。したがって、今回は±0.5度大きく範囲設定をしました
2)グラフ間の幅は横幅:wspace、縦幅:hspaceで設定できます
☆ Cartopyを使った基本的な書き方は以下の記事をご覧ください。
それでは🌏
関連記事