2017-12-18 2 views
0

Ich versuche, den Abstand zwischen 4 Subplots der Durchlässigkeit und Reflexion für transverse magnetische und elektrische Feldwellen anzupassen. Ich fügte die 4 Plots in 1 Abbildung Plot hinzu. Mein Ziel ist es, die Unterplots-Ränder zu ändern, damit ich keine überlappenden Unterplots bekomme. Ich habe den Code unterVerbessern Sie die Größe und den Platz von Unterplots

import matplotlib.pyplot as plt 
import numpy as np 


"DEFINE FRESNEL EQUATIONS" 


"""Define reflection coefficient for Transverse electric waves""" 

### Reflection coefficient 

def Ref_1(theta): 

    n_1=1.33 

    r_TE_1 = np.cos(theta) - np.sqrt(n_1**2 - np.sin(theta)**2) 
    r_TE_1 = r_TE_1/(r_TE_1 + 2*np.sqrt(n_1**2 - np.sin(theta)**2)) 

    return r_TE_1 


### transmission coefficient 

def Trans_1(theta): 

    n_2=1.5 

    r_TE_2 = 2*np.cos(theta) 
    r_TE_2 = r_TE_2/(np.cos(theta) + np.sqrt(n_2**2 - np.sin(theta)**2)) 

    return r_TE_2 


"""Define reflection coefficient for Transverse magnetic waves""" 


### Reflection coefficient 

def Ref_2(theta): 

    n_1=1.33 

    r_TM = np.sqrt(n_1**2 - np.sin(theta)**2) - n_1**2*np.cos(theta) 
    r_TM = r_TM/(np.sqrt(n_1**2 - np.sin(theta)**2) + n_1**2*np.cos(theta)) 

    return r_TM 


### transmission coefficient 

def Trans_2(theta): 

    n_2=1.5 

    r_TM_2 = 2*np.cos(theta) 
    r_TM_2 = r_TM_2/(np.cos(theta)*n_2**2+np.sqrt(n_2**2-np.sqrt(theta))**2) 

    return r_TM_2 


"Set Fontlabel, Fontaxis" 
Fontlabel=12 
Fontaxis=13 

"Plot results" 
plt.figure() 
fig=plt.figure() 

Hoek = np.linspace(0,90,1) 
print(Trans_2(100*(180/np.pi))) 
ax1=fig.add_subplot(221) 
ax1.plot(Hoek,Ref_1(Hoek),'blue',linewidth=0.8) 
plt.title('TE gepolariseerd licht bij Refrectie') 
plt.xlabel('$Hoek (\Theta)$') 
plt.ylabel('$Amplitude$') 

ax2=fig.add_subplot(222) 
ax2.plot(Hoek,Trans_1(Hoek),'red',linewidth=0.8) 
plt.title('TE gepolariseerd licht bij Transmissie') 
plt.xlabel('$Hoek (\Theta)$') 
plt.ylabel('$Amplitude$') 

ax3=fig.add_subplot(223) 
ax3.plot(Hoek,Ref_2(Hoek),'green',linewidth=0.8) 
plt.title('TM gepolariseerd licht bij Reflectie') 
plt.xlabel('$Hoek (\Theta)$') 
plt.ylabel('$Amplitude$') 


ax4=fig.add_subplot(224) 
ax4.plot(Hoek,Trans_2(Hoek),'black',linewidth=0.8) 
plt.title('TM gepolariseerd licht bij Transmissie') 
plt.xlabel('$Hoek (\Theta)$') 
plt.ylabel('$Amplitude$') 
plt.subplots_adjust(hspace=0.9) 
#plt.show() 

mit diesen Subplots habe ich die folgenden schlechten Formate. Ich weiß nicht, wie ich den Unterplot-Rand ändern kann, damit ich keine Subplots bekomme, die sich überlappen.

enter image description here

+0

Verwenden 'plt.tight_layout()' für automatische Einstellungen angepasst. Andernfalls verwenden Sie 'pltpotts_adjust (...)', um die Parameter für Ihre Bedürfnisse zu spezifizieren. Da die Daten in den Plots nicht vorhanden sind, müssen Sie Winkel in Radianten anstelle von Grad in die Funktionen einfügen. (Nicht sicher, ob die Funktionen selbst korrekt sind. Sie scheinen viel komplizierter zu sein als die, die man normalerweise verwenden würde.) – ImportanceOfBeingErnest

+0

@ImportanceOfBeingErnest Ich habe 'plt.tight_layout()' versucht, aber ich habe keine befriedigenden Einstellungen erhalten. Ich versuchte 'pltplots_adjust (oben = 1.5, unten = 0.18, links = 1, rechts = 1, hspace = 0.4, wspace = 0.7)' und das funktionierte, aber das Finden der richtigen Konfiguration fängt an, eine echte Herausforderung zu sein, – kevin

+0

Werte sind Bruchteile der Figurengröße. Sie größer als 1 zu machen macht keinen Sinn. Auch die Wahl von links == rechts macht keinen Sinn. Beginnen Sie mit etwas wie pltplots_adjust (oben = 0.9, unten = 0.2, links = 0.2, rechts = 0.8, hspace = 0.5, wspace = 0.5). Berücksichtigen Sie auch, die Figur größer zu machen, 'fig = plt.figure (figsize = (8,6))'. – ImportanceOfBeingErnest

Antwort

0

Der Raum zwischen den Nebenhandlungen unter Verwendung der folgenden Codes werden kann

plt.subplots_adjust(top=1.5,bottom=0.18, left=0.2, right=2, hspace=0.4, wspace=0.2) 
Verwandte Themen