2017-07-05 3 views
0

Ich habe Probleme beim Entfernen von übermäßigen Leerstellen beim Mischen von 2D- und 3D-Unterplots. Für reine 3D-Unterplots kann ich den Bereich, der geplottet wird, mit fig.subplots_adjust() anpassen, um die Leerräume zu entfernen, siehe here.matplotlib: Entfernen von 3D-Plots in gemischten 2D-/3D-Unterplots

Derselbe Trick funktioniert jedoch nicht, wenn sich dieses 3D-Bild in einem 2D-Teilplot befindet. Ich habe die gemischten Nebenhandlungen wie folgt aus:

import matplotlib.pyplot as plt  
from matplotlib import cm 
from mpl_toolkits.mplot3d import axes3d 

fig,axes = plt.subplots(2,2) 
ax = axes.flat 

for a in range(3): 
    ax[a].plot(range(10),range(10)) 

ax[3].remove() 
ax[3] = fig.add_subplot(224,projection='3d') 

X, Y, Z = axes3d.get_test_data(0.03) 
ax[3].plot_surface(X, Y, Z, rstride=8, cstride=8, alpha=0.8,cmap=cm.coolwarm) 

ax[3].set_xticklabels('') 
ax[3].set_yticklabels('') 
ax[3].set_zticklabels('') 

fig.subplots_adjust(hspace=0,wspace=0) 

Nun der Trick zB. fig.subplots_adjust(left=-0.01) wirkt sich auf die linke Kante des 2D-Teilplots aus, und die 3D-Teilplots werden nicht geändert. Gibt es eine Möglichkeit, die weißen Bereiche um den 3D-Teilplot komplett zu entfernen? Ich probierte auch kleinere ax.dist und es ist nicht gut, wenn das 3D-Diagramm in z-Richtung länger ist.

enter image description here

+0

Können Sie ein minimales Arbeitsbeispiel angeben? Im obigen Code fehlen Anweisungen. –

+0

@NipunBatra Danke für die Erinnerung, ich habe die Importe am Anfang hinzugefügt und getestet, es funktioniert. – Phyinmi

Antwort

0

Es gibt keine Leerzeichen um die Achsen ist, überlappt es auch die anderen Handlungsstränge (ihre Stacheln verborgen werden durch die 3D-Achsen).

Sie möchten die Größe des grauen Würfels in den Achsen anpassen. Dies kann durch Ändern des Betrachtungsabstandes zu diesem Würfel erfolgen.

z. ax[3].dist = 7

enter image description here

ax[3].dist = 9

enter image description here

Der optimale Abstand hängt natürlich von dem Betrachtungswinkel.

+0

Ich habe 'ax.dist' vorher versucht, aber da der graue Würfel des 3D-Subplots kein Quadrat ist, hat eine Seite mehr Abstände als die andere. Das möchte ich entfernen. Ist es in Ihrem Fall "ax.dist = 9" möglich, den Abstand auf der linken Seite zu entfernen und dann die untere Kante nach unten zu strecken, um das Seitenverhältnis nachzuahmen? – Phyinmi

Verwandte Themen