2D-Diagramme liegen in Python mplot3D nicht bündig an den Wänden der 3D-Achse an.

Ich versuche, 2D-Daten auf eine 3D-Achse zu zeichnen. Ich habe die 3D-Form mitax.plot_surface aber ich kann mit @ nicht erreichen, dass die 2D-Daten bündig an den Achsenwänden anliegax.plot.

Hier ist ein reduzierter Beispielcode, der das Problem mit den 2D-Daten zeigt:

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

# Generate Example Data
x = [0.04,0,-0.04]
y = [0.04,0,-0.04]
z = [0.04,0,-0.04]

# Start plotting environment
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

# Plot 3 lines positioned against the axes "walls"
ax.plot(x,y,-0.08,zdir='z',c='r')
ax.plot(x,z, 0.08,zdir='y',c='g')
ax.plot(y,z,-0.08,zdir='x',c='b')

# Label each axis
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')

# Set each axis limits
ax.set_xlim([-0.08,0.08])
ax.set_ylim([-0.08,0.08]) 
ax.set_zlim([-0.08,0.08]) 

# Equally stretch all axes
ax.set_aspect("equal")

# Set plot size for saving to disk
plt.gcf().set_size_inches(11.7,8.3) 

# Save figure in .eps and .png format
plt.savefig('test.eps', format='eps')
plt.savefig('test.png', format='png', dpi=300)

# Display figure
plt.show()

Dies ergibt das folgende Ergebnis, anhand dessen Sie möglicherweise erkennen können, dass die Enden der Datenlinien nicht auf den Achsenlinien liegen (dh nicht mit 0.04 und -0.04 ausgerichtet sind):

urch interaktives Erkunden der Handlung stellte ich fest, dass sich die 0,08 imax.plotit @ -Anrufen und einer Größe von 0,083 (unter Beibehaltung der entsprechenden Zeichen) können die Diagramme viel flacher an die Wand angepasst werden.

Meine Interpretation davon ist, dass der Plot meine Achsengrenzen nicht erzwingt, was auf dem Plot offensichtlich erscheint, wenn man die Abstände betrachtet, in denen sich die Achsen treffen, aber @ verwendeax.get_xlim() etc, zeigt die von mir eingestellten Werte an, damit mir etwas fehlt.

Haben Sie eine Idee, wie ich diese Grundstücke bündig an die Wände lehnen kann?

Danke vielmals

Tim

Bearbeiten

Ich habe auch versucht, die Achsengrenzen mit @ einzustelle

ax.set_xlim3d(-0.08,0.08)
ax.set_ylim3d(-0.08,0.08) 
ax.set_zlim3d(-0.08,0.08) 

un

 ax.set_xlim3d([-0.08,0.08])
 ax.set_ylim3d([-0.08,0.08]) 
 ax.set_zlim3d([-0.08,0.08])

ohne Glück.

Ich neige definitiv dazu, dies einem Auffüllproblem zuzuschreiben, bei dem sich die Achsen treffen, aber ich kann keine Dokumentation dazu finden. dh Ich setze die Plotposition auf -0.08 und das Achsenlimit auf -0.08, aber das Plot fügt am Ende ein kleines Auffüllen hinzu, um die Limits irgendwo zwischen -0.082 und -0.083 festzulegen.

Ich möchte entweder die Auffüllung entfernen oder den Auffüllwert abrufen, damit ich ihn in @ eingeben kanax.plot Befehl

Edit2:

Jemand anderes, der auf dieses Problem gestoßen ist, das Problem jedoch noch nicht behoben hatndern der Position der Gitterwände in einer mplot3d-Fig

Antworten auf die Frage(2)

Ihre Antwort auf die Frage