Gibt es eine Möglichkeit zu sagen, wo ein Benutzer in Matplotlib auf ein 3D -Oberflächendiagramm geklickt hat?Python

Python-Programme
Anonymous
 Gibt es eine Möglichkeit zu sagen, wo ein Benutzer in Matplotlib auf ein 3D -Oberflächendiagramm geklickt hat?

Post by Anonymous »

Ich erstelle ein 3D -Diagramm mit Matplotlib. Das Diagramm enthält Punkte, Linien und Oberflächen, die im 3D -Raum angezeigt werden. Mit der Option "picker = true" für die Zeilen und Punkte kann ich sie anklicken lassen. Und wenn der Benutzer darauf klickt, kann ich den Speicherort seines Zeigers im 3D -Bereich mit "get_data_3d" zurückgeben. Ich kann dies nicht dazu bringen, mit den 3D -Oberflächen zu arbeiten. Sie sind Poly3DCollections anstelle von Line3D. Sie haben keine "get_data_3d" -Funktion. Irgendeine Idee, wie ich zurückgeben kann, wo der Benutzer auf eine 3D -Oberfläche klickt? < /P>

Code: Select all

# Imports
import matplotlib.pyplot as plt
import numpy

# If a point is selected, print its location
def onPick(event):
points = event.artist
print(points.get_data_3d())

# Create a 3D plot
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

# Create a plane in 3D space
x = numpy.arange(-50, 50, 1)
y = numpy.arange(-50, 50, 1)
z = numpy.array([[5 for _ in x] for _ in y])
x, y = numpy.meshgrid(x, y)

# Plot the plane
ax.plot_surface(x, y, z, alpha=0.2, color="y", picker=True, pickradius=5)

# Call a function if the plane is clicked on
fig.canvas.mpl_connect('pick_event', onPick)

# Show the plot
plt.show()
< /code>
Klicken Sie auf Maus auf einem Punkt der Oberfläche. Ich erhalte: < /p>
AttributeError: 'Poly3DCollection' object has no attribute 'get_data_3d'

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post