2016-07-27 29 views
0

Wenn ich einen 3D-Plot in Matplotlib machen:Matplotlib 3D-Plot: wie der übermäßige Leerraum loswerden?

from mpl_toolkits.mplot3d import Axes3D 
fig = plt.figure() 
ax = fig.gca(projection='3d') 

x_labels = [10,20,30] 
x = [1,2,3,4] 
y = [3,1,5,1] 
legend = False 

for label in x_labels: 
    x_3d = label*np.ones_like(x) 
    ax.plot(x_3d, x, y, color='black', label='GMM') 
    if legend == False: 
     ax.legend() 
     legend = True 

ax.set_zlabel('test') 

Es wird produzieren:

enter image description here

Auf der linken Seite haben exzessive Leerraum. Ich will wissen, ob es möglich ist, es loszuwerden?

+0

Haben Sie auf dem Grundstück in den Achsen beziehen oder auf die Achsen in der Figur? – Aguy

+1

Wenn Sie auf die Zeichnung klicken und die Maus bewegen, bewegt sich auch die Zeichnung. Wenn Sie es auf der X-Achse um 90 Grad bewegen, befinden sich die Z-Label und die Z-Ticks auf der anderen Seite. Ich nehme an, der übermäßige Whitespace soll dies berücksichtigen. – DavidG

+0

@Aguy die linke Zahl "10", und der Leerraum auf der linken Seite und zwischen dem schwarzen Hintergrund. – cqcn1991

Antwort

2

Es ist wahrscheinlich zu spät, aber ich stieß auf ähnliche Probleme und hier ist, was ich getan habe, um den Leerraum zu entfernen: Verwenden Sie fig.subplot_adjust(), um links/rechts außerhalb der normalen Region. In Ihrem Fall fand ich fig.subplot_adjust(left=-0.11) gibt ein vernünftiges Ergebnis.

Voll Code unten:

from mpl_toolkits.mplot3d import Axes3D 
fig = plt.figure() 
ax = fig.gca(projection='3d') 

x_labels = [10,20,30] 
x = [1,2,3,4] 
y = [3,1,5,1] 
legend = False 

for label in x_labels: 
    x_3d = label*np.ones_like(x) 
    ax.plot(x_3d, x, y, color='black', label='GMM') 
    if legend == False: 
     ax.legend() 
     legend = True 

ax.set_zlabel('test') 

fig.tight_layout() 
fig.subplots_adjust(left=-0.11) # plot outside the normal area 

enter image description here