2016-07-27 1 views
0

Si je fais un terrain 3D Matplotlib:Matplotlib 3d plot: comment se débarrasser de l'espace blanc excessif?

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') 

Il produira:

enter image description here

Le côté gauche ont un espace blanc excessif. Je veux savoir s'il est possible de s'en débarrasser?

+0

-vous référer à l'intrigue à l'intérieur des axes ou des axes à l'intérieur du personnage? – Aguy

+1

Si vous cliquez sur l'intrigue et déplacez votre souris autour de l'intrigue se déplace également. Si vous le déplacez sur l'axe x de 90 degrés, l'étiquette z et les z coches seront de l'autre côté. Je suppose que l'espace excessif est pour accommoder ceci. – DavidG

+0

@Aguyez le chiffre le plus à gauche "10" et l'espace blanc à sa gauche et entre le fond noir. – cqcn1991

Répondre

2

Il est probablement trop tard, mais j'ai rencontré des problèmes similaires et voici ce que j'ai fait pour supprimer l'espace blanc: utilisez fig.subplot_adjust() pour mettre à gauche/droite en dehors de la région normale. Dans votre cas, j'ai trouvé fig.subplot_adjust(left=-0.11) donne un résultat raisonnable.

code complet ci-dessous:

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