2017-07-05 32 views
0

2Dおよび3Dサブプロットを混在させる際に余分な空白を取り除くことができません。純粋な3Dサブプロットの場合、プロットする領域をfig.subplots_adjust()に調整して空白を削除することができます。hereを参照してください。matplotlib:混合2D/3Dサブプロットの3Dプロットの空白を削除する

しかし、この3D画像が2Dサブプロット内にある場合、同じトリックは機能しません。今

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) 

トリック例えば: 私は次のような混合サブプロットを作成しました。 fig.subplots_adjust(left=-0.01)は2Dサブプロットの左端に作用し、3Dサブプロットは変更されません。 3Dサブプロットを囲む空白を完全に削除する方法はありますか?私はまた小さいax.distを試しました、そして、もし3Dプロットがz方向にもっと長いなら、それは良くありません。

enter image description here

+0

最低限の実例を提供できますか?上記のコードには記述がありません。 –

+0

@NipunBatra思い出してくれてありがとう、冒頭にインポートを追加してテストしています。 – Phyinmi

答えて

0

軸の周りに空白がありませんが、それも他のサブプロットを(彼らの棘が、3Dの軸によって隠されている)と重なります。

あなたが望むのは、軸の内側のグレーの立方体のサイズを調整することです。これは、その立方体に対する視距離を変えることによって行うことができる。

など。 ax[3].dist = 7

enter image description here

ax[3].dist = 9

enter image description here

最適な距離は、視野角にもちろん依存します。

+0

私は以前に 'ax.dist'を試しましたが、3Dサブプロットの灰色の立方体は正方形ではないので、一方の側の方がもう一方の方の方が間隔が広いでしょう。それは私が削除したいものです。あなたの 'ax.dist = 9'のケースでは、左のスペースを取り除いて、縦横比を模倣するために下のエッジを伸ばすことは可能ですか? – Phyinmi

関連する問題