Python の plt.quiver で矢印を描画する

matplotlib.pyplot.arrowを使わず、matplotlib.pyplot.quiverを使うとうまくかける。矢印の始点(px, py)、矢印のベクトル(vx, vy)、色(colors)を作り、quiverに与える。

ベクトルは、範囲に収まるように適宜係数をかける。(今回だと *0.1 )

scale = 1,scale_units='xy' の仕様は良く理解していない。ここは変えない方が良い。なくても良い。

imでカラーバーを取得し、描画できる。今回は範囲を[0,16]にしている。

サンプルコード

import matplotlib.pyplot as plt

px=[]
py=[]
vx=[]
vy=[]
colors=[]

for yi in range(10):
    for xi in range(10):
        px.append(xi)
        py.append(yi)
        vx.append(yi*0.1)
        vy.append(xi*0.1)
        colors.append((xi**2+yi**2)**0.5)

fig = plt.figure()
plt.gca().set_aspect('equal')
im = plt.quiver(px,py,vx,vy,colors, cmap='Reds', scale = 1,scale_units='xy')
plt.xlim(0,10)
plt.ylim(0,10)
fig.colorbar(im)
im.set_clim(0,16)
plt.savefig("save.pdf")
plt.show()

できる絵

f:id:onsanai:20201222000320p:plain
pythonでquiverを使った矢印の描画