quiverで指定する速度ベクトルの符号反転させたい

実現したいこと

quiverで指定する速度ベクトルの符号反転させたいです。速度ベクトル(dx, dy)のデータは既に持っています。
dxs.txtの中身は
1 2
1 3
です。
dys.txtの中身は
1 1
1 1
です。
速度ベクトルを(dx, -dy)で描きたいときはどうすれば良いでしょうか。

該当のソースコード

こちらに載っているコードの28行目のvyを-vyに変えたものです。

Python

1import cv2 2import numpy as np 3import matplotlib.pyplot as plt 4import math 5 6with open('dxs.txt', 'r') as f:7 vx = [[*map(float, l.split())] for l in f.readlines()]8 9with open('dys.txt', 'r') as f:10 vy = [[*map(float, l.split())] for l in f.readlines()]11 12###############################13plt.xlim(0, 4)14plt.ylim(0, 3)15plt.xticks([i for i in range(0,5)])16plt.yticks([i for i in range(0,4)])17plt.grid()18 19plt.title("sample", fontsize=15)20plt.xlabel("X", fontsize=15)21plt.ylabel("Y", fontsize=15)22plt.gca().set_aspect('equal')23 24X = [*range(0, 2)]25Y = [*range(0, 2)]26norm_drs = [(vx[j][i]**2 + vy[j][i]**2) ** 0.5 for j in Y for i in X]27 28qv = plt.quiver(X, Y, vx, -vy, norm_drs, cmap='Reds', scale=1, scale_units='xy', angles='xy')29plt.gcf().colorbar(qv)30qv.set_clim(0, 5)31 32plt.savefig('result.png')

試したこと

調べてみると、リストにマイナスを付けてもダメなようです。
以下のように関数を定義してやってみましたが、うまくいきませんでした。

python

1def f(x):2 f = -x 3 return f 4 5vy2 = f(vy)6 7qv = plt.quiver(X, Y, vx, vy2, norm_drs, cmap='Reds', scale=1, scale_units='xy', angles='xy')

以下のようなエラーメッセージが出ます。

File "・・・\testCV218-75.py", line 40, in <module> vy2 = f(vy) ^^^^^ File "・・・\testCV218-75.py", line 37, in f f = -x ^^ TypeError: bad operand type for unary -: 'list'

コメントを投稿

0 コメント