2017-07-05 4 views
0

Je n'arrive pas à supprimer les espaces blancs excessifs lors du mélange de sous-trames 2D et 3D. Pour les sous-tracés 3D purs, je peux ajuster la région à tracer avec fig.subplots_adjust() pour supprimer les espaces blancs, voir here.matplotlib: supprime les espaces blancs du tracé 3D dans des sous-plans mixtes 2D/3D

Cependant, la même astuce ne fonctionne pas si cette image 3D est à l'intérieur d'une sous-placette 2D. J'ai créé les intrigues secondaires mixtes comme les suivantes:

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) 

Maintenant par exemple trick. fig.subplots_adjust(left=-0.01) agira sur le bord gauche du sous-diagramme 2D et les sous-plans 3D ne seront pas modifiés. Est-il possible de supprimer complètement les espaces blancs entourant la sous-intrigue 3D? J'ai également essayé plus petit ax.dist et il n'est pas bon si l'intrigue 3D est plus long dans la direction z.

enter image description here

+0

Pouvez-vous fournir un exemple de travail minimal? Il y a des instructions manquantes dans le code ci-dessus. –

+0

@NipunBatra Merci de me le rappeler, j'ai ajouté les imports au début et testé que ça marche. – Phyinmi

Répondre

0

Il n'y a pas d'espace autour des axes, il recouvre même les autres intrigues secondaires (leurs épines sont cachés par les axes 3D).

Ce que vous voulez, c'est ajuster la taille du cube gris à l'intérieur des axes. Cela peut être fait en changeant la distance d'observation de ce cube.

E.g. ax[3].dist = 7

enter image description here

ax[3].dist = 9

enter image description here

La distance optimale dépend bien sûr de l'angle de vue.

+0

J'ai déjà essayé 'ax.dist', mais comme le cube gris du subplot 3D n'est pas un carré, l'un des côtés aura plus d'espace que l'autre. C'est ce que je veux enlever. Dans votre cas 'ax.dist = 9', est-il possible de supprimer l'espacement sur la gauche, puis d'étirer le bord inférieur pour imiter le rapport d'aspect? – Phyinmi