70387


前回、同じ内容の質問を申し上げましたが、コードを何も載せなかったので本当に申し訳ございませんでした。  
今回はコードの一部を載せ、再質問いたします。  
著作権のためコードの一部しか載せないところご了解お願い致します。

[code]

            utc              latA      lonA        latB         lonB
    2020-04-26 09:40:00 34.659167   135.299167  34.693384   135.303307
    2020-04-26 09:56:00 34.613921   135.217850  34.614219   135.218978
    
[/code]

A点はutcに該当する船の位置を示し、B点はA点における潮流の影響を作用した予想位置を示します。  
A点の位置からB点まで矢印を引き、潮流の動き表示する作業をしたいですが、出来るところまで、作業してみましたが、上手くいけなくて質問します。

以下のような矢印を引きたいです。青い点がA点、赤い点がB点を示します。

黒い矢印が作りたいものになります。

ご答えよろしくお願いいたします。

**作りたい図の構成:**

[![作りたい図の構成](https://i.stack.imgur.com/o4lsJ.png)](https://i.stack.imgur.com/o4lsJ.png)

**現状のソースコード:**

[code]

    from mpl_toolkits.basemap import Basemap
    import matplotlib.pyplot as plt
    
    plt.figure(figsize=(40,60))  
    
    # 上限／下限の設定
    lat_min = data['latA'].min()-0.1
    lat_max = data['latA'].max()+0.1
    lon_min = data['lonA'].min()-0.1
    lon_max = data['lonA'].max()+0.1
    
    # 緯度・経度の範囲／単位を取得
    lats = np.linspace(lat_min, lat_max, 40)  # 緯度 
    lons = np.linspace(lon_min, lon_max, 40) # 経度 
    
    # グリッドデータに変換
    x, y = np.meshgrid(lons, lats)
    
    # Basemapオブジェクトの作成
    bmap = Basemap(
        projection='merc',
        resolution='h',
        llcrnrlon=lon_min,
        llcrnrlat=lat_min,
        urcrnrlon=lon_max,
        urcrnrlat=lat_max)
     
    # 陸地の塗り潰し
    bmap.fillcontinents(color='lightgray', lake_color='white',zorder = 0)
    # 緯線を描く
    bmap.drawparallels(lats, labels=[1,0,0,0], fontsize=10, color='gray')
    # 経線を描く
    bmap.drawmeridians(lons, labels=[0,0,0,1], fontsize=10, color='gray')
    
    latssA=np.array(data['latA'])
    lonssA=np.array(data['lonA'])
    
    lat1 = latssA
    lon1 = lonssA
    
    latssB=np.array(data['latB'])
    lonssB=np.array(data['lonB'])
    
    lat2 = latssB
    lon2 = lonssB
    
    xunknown,yunknown = bmap(lon1, lat1) 
    xunknown2,yunknown2 = bmap(lon2, lat2) 
    
    bmap.plot(xunknown, yunknown, 'bo', markersize=11)
    bmap.plot(xunknown2, yunknown2, 'ro', markersize=20)
    
[/code]


CC BY-SA 4.0
2020-09-12T15:12:44.593
70334
2020-09-14T14:28:44.373
2020-09-13T06:07:07.890
37823
37823
question
python python3
地図上にA点からB点まで矢印を引きたい


[quiver(x, y, u, v, *args,
**kwargs)](https://matplotlib.org/basemap/api/basemap_api.html#mpl_toolkits.basemap.Basemap.quiver)というメソッドで出来ます。

日本語化解説はこちら。  
[Pythonで世界地図(matplotlib basemap
toolkit翻訳)-3](https://qiita.com/ty21ky/items/e98127203bf015f547d4)

*args, **kwargsに指定できるものはこちら。  
[matplotlib.pyplot.quiver](https://matplotlib.org/3.1.0/api/_as_gen/matplotlib.pyplot.quiver.html)

処理的には以下で、`zorder`が指定してあるのは矢印の元と先が丸に隠れたため。  
場所や方向によっては何かもう少し複雑な計算が必要かもしれませんが。

[code]

    u = np.subtract(xunknown2, xunknown)
    v = np.subtract(yunknown2, yunknown)
    bmap.quiver(xunknown, yunknown, u, v, scale=1, units='xy', zorder=3)
    
[/code]


CC BY-SA 4.0
2020-09-14T14:28:44.373
70387
2020-09-14T14:28:44.373
26370
70334
answer