2011-02-24 36 views
1

我試圖用2D和3D繪製圖像。到目前爲止,我已經做了以下內容:在mplot3D中擴大繪圖

import idlsave 
import matplotlib 
from matplotlib import * 
import numpy as np 
from mpl_toolkits.mplot3d import Axes3D 
import matplotlib.pyplot as plt 
from matplotlib.patches import Ellipse 
from matplotlib import rc 
rc('font',**{'family':'sans-serif','sans-serif':['Helvetica']}) 
fig = plt.figure(figsize=(18,5)) 
ax = fig.add_subplot(1,3,1, projection='3d',azim=-133,elev=14) 
l = ax.plot3D(X3D,Y3D,Z3D,lw=2,color='red') 
ax.set_xlim3d(-10,10) 
ax.set_ylim3d(-10,10) 
ax.set_zlim3d(-10,10) 
ax.text(-2,-7,-11,'b$_r$ [mT]','x') 
ax.text(-5,-1,-11,'b$_p$ [mT]','y') 
ax.set_zlabel(r'b$_t$ [mT]') 
ax.plot([bEq[0],-bEq[0]],[bEq[1],-bEq[1]],[bEq[2],-bEq[2]],'b--',lw=2) 
ax.plot([pLe[0],-pLe[0]],[pLe[1],-pLe[1]],[pLe[2],-pLe[2]],color='black',lw=2) 
ax.text(3,12,9.2,'(a)', fontsize=14) 
ax = fig.add_subplot(1,3,2) 
l = ax.plot(br,bp,'k-',lw=2) 
ax.set_xlabel(r'b$_{\lambda_1}$ [mT]') 
ax.set_ylabel(r'b$_{\lambda_2}$ [mT]') 
ax.set_xlim(-2,6.3) 
ax.set_ylim(-5.5,5.5) 
ax.plot([0,0],[-5.5,5.5],'k-.') 
ax.plot([-2,6.3],[0,0],'k-.') 
e=Ellipse((pf[2],pf[3]),2*pf[0],2*pf[1],- pf[4]*57.2958,fc='none',lw=2,ls='dashed',ec='red') 
ax.add_artist(e) 
ax.text(-1,4, '(b)', fontsize=14) 
ax = fig.add_subplot(1,3,3) 
ax.plot(-bxDip,-byDip,'b-',lw=2,label='$\mathcal{D}$') 
ax.plot(-bxMon,-byMon,'r-',lw=2,label='$\mathcal{M}$') 
ax.set_xlabel(r'b$_{\lambda_1}$') 
ax.set_ylabel(r'b$_{\lambda_2}$') 
ax.set_xlim(-4,12) 
ax.set_ylim(-6,7) 
ax.plot([-4,12],[0,0],'k-.') 
ax.plot([0,0],[-6,7],'k-.') 
ax.legend(loc='upper right') 
ax.text(-3,5.5, '(c)', fontsize=14) 
plt.savefig("../pdf_box/fig3.pdf",bbox_inches='tight') 

威特本代碼中,我能夠產生圖這裏報道http://img219.imageshack.us/i/fig3e.png/

有兩個問題,這讓我困惑。 1)正如你所看到的3D圖比其他兩個小,並且子圖之間有足夠的空白來增加尺寸。我怎樣才能做到這一點?即如何擴大一個子圖的大小,最終減少另兩個? 2)我想排除3D圖中的灰色背景。

任何幫助非常歡迎。

回答

2

更改ax.dist三維圖。這將導致渲染的圖形填充更多的子區域。這是一個類似的question。你可能會在那裏找到更多的信息。

可能還需要相對於調整副區的寬度彼此(增加3D圖的寬度和收縮2D繪圖。這可以用subplots_adjust

來實現