天気図用紙を描画するpythonプログラム

こちらのページで公開している、天気図を作成するプログラム(python)を公開します。

完成図サンプル
from copy import copy
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import cartopy.feature as cfeature
import matplotlib.ticker as mticker
import numpy as np
import matplotlib.pyplot as plt
import shapely.geometry as sgeom
import pandas as pd

fig = plt.figure(figsize=(11.69,8.27), dpi=600)
plt.subplots_adjust(left=0.02, right=0.98, bottom=0.02, top=0.98)
ax = plt.axes(projection=ccrs.LambertConformal(
              central_longitude=140,
              central_latitude=30, ))
ax.set_extent([110, 170, 13, 53], crs=ccrs.PlateCarree()) #西端の経度, 東端の経度, 南端の緯度, 北端の緯度
land_50m = cfeature.NaturalEarthFeature('physical', 'land', '10m', facecolor=cfeature.COLORS['land'])
ax.add_feature(cfeature.LAND.with_scale('10m'), color="gray", alpha=0.25) # 陸地に着色

# 2度ごとの経緯線
gl = ax.gridlines(crs=ccrs.PlateCarree(), linewidth=0.2, color="gray", alpha=0.5) # 経度線・緯度線を描く
gl.n_steps = 180 # 線の滑らかさ
gl.xlocator = mticker.FixedLocator(np.arange(-180,360,2)) # 細い経線
gl.ylocator = mticker.FixedLocator(np.arange(0,90,2)) # 細い緯線

# 10度ごとの経緯線
gl = ax.gridlines(crs=ccrs.PlateCarree(), linewidth=0.3, color="gray", alpha=0.6) # 経度線・緯度線を描く
gl.n_steps = 180 # 線の滑らかさ
gl.xlocator = mticker.FixedLocator(np.arange(0,360.1,10)) # 太い経線
gl.ylocator = mticker.FixedLocator(np.arange(0,90.1,10)) # 太い緯線

fig.canvas.draw()

D = np.array(pd.read_csv("location_name.csv"))
city_lat = D[:,2]
city_lon = D[:,3]
ax.scatter(city_lon,city_lat,transform=ccrs.PlateCarree(),facecolor="white",edgecolors="gray",linewidths=0.2,s=50)
for i in range(53):
    ax.text(D[i,5],D[i,4]+0.5,D[i,0], transform=ccrs.PlateCarree(), size=6, color="silver")
ax_pos = ax.get_position()
fig.savefig("tenkizu.png")

注意点

① 実行の前に、観測地点の地名と座標を記した下のファイルをダウンロードしてください。天気図記号を書き込む〇と地名が重ならないように緯度経度に修正を加えてあります。

② 日本語表示が文字化けする(豆腐になる)場合は、日本語フォントの導入が必要です。下記のサイトが非常に参考になります。

Matplotlibの日本語の文字化けを直す方法【Python】

③ 公開している天気図の目盛りと観測者名を書く欄は、画像編集ソフトを用いて追記しました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です