Ausgabe
Ich habe eine Zeitreihe, die der Einfachheit halber so aussieht:
import pandas as pd
points = [0, 1, 0, 0, -1, 0]
df = pd.DataFrame(points)
df.plot(legend=False)
Jetzt möchte ich die Werte basierend auf einem bestimmten Winkel drehen, der zwischen 0 und 90 Grad liegen wird.
Hinweis: Ich muss die Werte nicht wirklich zeichnen können, aber ich interessiere mich für die resultierenden Werte.
Der resultierende Plot für eine Drehung um 90 Grad würde laut matplotlib so aussehen:
from matplotlib import pyplot, transforms
base = pyplot.gca().transData
rot = transforms.Affine2D().rotate_deg(90)
pyplot.plot(df, transform=rot+base)
pyplot.show()
Also frage ich, was ist der mathematische/programmatische Weg, um Werte um einen Winkel gedreht zu bekommen?
Lösung
Versuchen Sie es unten:
Drehen Sie einen Punkt im XYZ-Raum um die Z-Achse um den Winkel γ:
import numpy as np
import math
def rotate_z(x, y, z, gamma):
gamma = gamma * (np.pi / 180)
x_r = np.cos(gamma)*x - np.sin(gamma)*y
y_r = np.sin(gamma)*x + np.cos(gamma)*y
z_r = z
print(f"{(x, y, z)} rotate {gamma*(180/np.pi)} degrees around the Z-axis,result {(x_r, y_r, z_r)}")
return x_r, y_r, z_r
Die Formel ist unten:
Drehen Sie einige Grad um die z-Achse, um das Ergebnis zu erhalten
Beantwortet von – freemangifts
Antwort geprüft von – David Goodson (FixError Volunteer)