Dynamic Point Manipulation in 3D Matplotlib

eim Versuch, ein Diagramm in matplotlib zu manipulieren, bin ich auf etwas Interessantes gestoßen. Bei Verwendung der Plot-Funktion können die x- und y-Koordinaten durch Aliasing geändert werden, das z jedoch nicht. Ist das leicht zu erklären? Ich habe ein kleines Beispiel beigefügt. Beachten Sie, dass ich versucht habe, den Punkt in einer Helix entlang des Zylinders zu bewegen.

import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

ax.set_xlabel("X")
ax.set_ylabel("Y")
ax.set_zlabel("Z")

radius = 8

# Cylinder
x = np.linspace(-radius, radius, 100)
z = np.linspace(0, 2, 100)
X, Z = np.meshgrid(x, z)

Y = np.sqrt(radius**2 - X**2)

ax.plot_surface(X, Y, Z, alpha=0.3, linewidth=0)
ax.plot_surface(X, (-Y), Z,alpha=0.3, linewidth=0)

X = np.array(np.zeros(1))
Y = np.array(np.zeros(1))
Z = np.array(np.zeros(1))

X[0]= radius*np.cos(np.deg2rad(0))
Y[0]= radius*np.sin(np.deg2rad(0))
Z[0]= 0.

ax.plot(X,Y,Z, 'or',markersize=3)

for i in range(0,360,5):

    X[0]= radius*np.cos(np.deg2rad(i))  
    Y[0]= radius*np.sin(np.deg2rad(i))
    Z[0]= i/140.

    plt.draw()
    plt.pause(0.01)

Zum Nachschlagen besteht das Endziel dieser Übung darin, den Punkt basierend auf den Sensoreingaben in Echtzeit in drei Dimensionen zu positionieren.

Vielen Dank an alle, die einen Einblick haben, warum dies geschieht, und mögliche Lösungen!

Antworten auf die Frage(2)

Ihre Antwort auf die Frage