[FIXED] Zeitreihenwerte mit Python um einen Winkel drehen

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)

Geben Sie hier die Bildbeschreibung ein

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()

Geben Sie hier die Bildbeschreibung ein

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)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like