ベクトルの回転について
a°回転させるには以下の通りである
df["X"] = df["x"]*math.cos(math.radians(a)) - df["y"]*math.sin(math.radians(a))
df["Y"] = df["x"]*math.sin(math.radians(a)) + df["y"]*math.cos(math.radians(a))
例; ランダムな点を回転させる
import seaborn as sns
import matplotlib
# matplotlib.use('agg') # python scriptのときは有効化する
import matplotlib.pyplot as plt
import matplotlib.dates as mdates # time seriesの描画
import importlib
if importlib.util.find_spec("japanize_matplotlib"):
import japanize_matplotlib # 日本語フォントが入っていないなど
import random
import pandas as pd
import math
xy = []
for i in range(100):
x = random.randint(0, 10)
y = random.randint(0, 10)
xy.append( (x, y) )
df = pd.DataFrame(xy)
df.columns = ["x", "y"]
df["X"] = df["x"]*math.cos(math.radians(1)) - df["y"]*math.sin(math.radians(1))
df["Y"] = df["x"]*math.sin(math.radians(1)) + df["y"]*math.cos(math.radians(1))
df["X2"] = df["x"]*math.cos(math.radians(2)) - df["y"]*math.sin(math.radians(2))
df["Y2"] = df["x"]*math.sin(math.radians(2)) + df["y"]*math.cos(math.radians(2))
plt.figure(figsize=(15, 15)) # ここを大きくする
ax = sns.scatterplot(data=df, x="x", y="y")
ax = sns.scatterplot(data=df, x="X", y="Y")
ax = sns.scatterplot(data=df, x="X2", y="Y2")
ax