【Python】 Basemapでプロット、線引き

MAP(地図)

 以下、.pyファイル。

from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
import matplotlib
import numpy as np
font = {'family' : 'ibaraji'}
matplotlib.rc('font', **font)
fig=plt.figure(figsize=(12,12))
map = Basemap(projection='merc',llcrnrlat = 10.0,urcrnrlat = 45.0,llcrnrlon = 120.0,urcrnrlon = 210,resolution = "h")
map.drawcoastlines(linewidth=0.5,color='#000000')
map.fillcontinents(color = '#9acd32',lake_color='aqua')
map.drawmapboundary(fill_color='#7fffd4')
map.drawmeridians(np.arange(125,210,5),labels=[0,0,0,1],fontsize=10)
map.drawparallels(np.arange(10,45,5),labels=[1,0,0,0],fontsize=10)

label = [u"あきた",u"あぶ",u"グアム",u"ハワイ"]
lat = [39.72,34.50,13.47,21.31]
lon = [140.10,131.47,144.75,202.15]
xx,yy = map(lon,lat)
plt.plot([xx[0],xx[3]],[yy[0],yy[3]],'b-',linewidth=1)
plt.plot([xx[1],xx[2]],[yy[1],yy[2]],'b-',linewidth=1)
map.plot(xx,yy,'ro',markersize=5)
plt.text(xx[0]-400000,yy[0]+100000,label[0],fontsize=14,color='r')
plt.text(xx[1]-200000,yy[1]+100000,label[1],fontsize=14,color='r')
plt.text(xx[2]+50000,yy[2],label[2],fontsize=14,color='r')
plt.text(xx[3]+50000,yy[3],label[3],fontsize=14,color='r')
base = "plotline.png"
plt.savefig(base)
plt.show()

 途中のmap.drawparallels()までは「ベースマップづくり」とほぼ同じ。

 ラベル設定と座標設定
 xx,yy = map(lon,lat)で、座標(経度、緯度)の配列セット。

 ハワイは西経158°(-158°)くらいだが、とりあえず180°から22.15°足して202.15 °

 plt.plot() ・・・ 線(ライン)描画
  plt.plot([x1,x2],[y1,y2],’b-‘,linewidth=1)
  で、地点1(経度 x1,緯度 y1)と地点2(経度 x2,緯度 y2)を青色の実線 ’b-‘で結ぶ。

  ’-‘の部分が’–‘でダッシュ、’-.’でダッシュ・ドット、’:’でドットの線(ライン)。

 map.plot(xx,yy,’ro’,markersize=5)
  4地点一括してプロット。

  ’ro’は赤色の小円。
  ’r’(=red)、’b’(=blue)の他、’g’(=green)、’y’(=yellow)、’c’(=cyan)、’m’(=magenta)、’w’(=white)
  黒色 blackは’k’

  マーカーは’o’の部分が’^’で上三角、’s’で四角、’*’で星、’D’でダイヤなど。
  その他、詳細はmatplotlibのページ(matplotlib.org/)で確認。

 plt.text()  ・・・ テキスト(ラベル)表示。
  plt.text(x1,y1,label1,fontsize=14,color=’r’)
  で、地点1のラベル表示。
  表示位置は座標から±して適当に調整。

 引っ掛かったのは日本語が表示されない点。

font = {'family' : 'ibaraji'}
matplotlib.rc('font', **font)

で表示されるようになったが、手間取ったので別途まとめた。

label = [u"あきた",u"あぶ",u"グアム",u"ハワイ"]

のように
u”日本語文字”
とする。

 ※ matplotlib.rc()を使っているので、import matplotlibの宣言も忘れずに。

スポンサーリンク
ふシゼン
タイトルとURLをコピーしました