Matplotlib 2 subplots, 1 kleurenbalk

| | |

Ik heb te lang onderzocht hoe ik twee subplots dezelfde y-as kon laten delen met een enkele kleurenbalk die tussen de twee in Matplotlib werd gedeeld.

Wat er gebeurde was dat toen ik de colorbar() functie in ofwel subplot1 of subplot2, het zou de plot automatisch schalen zodat de colorbar plus de plot in de "subplot" zouden passen begrenzingsvak, waardoor de twee naast elkaar staande plots twee zeer verschillende afmetingen hebben.

Om dit te omzeilen, heb ik geprobeerd een derde subplot te maken die ik vervolgens heb gehackt om geen plot weer te geven met alleen een kleurenbalk Het enige probleem is dat de hoogte en breedte van de twee plots ongelijk zijn, en ik kan er niet achter komen hoe ik het er goed uit kan laten zien.

Hier is mijn code:

van __future__ import divisie importeer matplotlib.pyplot als plt importeer numpy als np uit matplotlib importeer patches uit matplotlib.ticker import NullFormatter # SIS Functies TE = 1 # Einstein radius g1 = lambda x,y: (TE/2) * (j**2 -x**2)/((x**2+y**2)**(3/2)) g2 = lambda x,y: -1*TE*x*y / ((x**2+ y**2)**(3/2)) kappa = lambda x,y: TE / (2*np.sqrt(x**2+y**2)) coords = np.linspace(-2,2.400 ) X,Y = np.meshgrid(coords,coords) g1out = g1(X,Y) g2out = g2(X,Y) kappaout = kappa(X,Y) for i in range(len(coords)): for j in range(len(coords)): if np.sqrt(coords[i]**2+coords[j]**2) <= TE: g1out[i][j]=0 g2out[i][j ]=0 fig = plt.figure() fig.subplots_adjust(wspace=0,hspace=0) # subplot nummer 1 ax1 = fig.add_subplot(1,2,1,aspect="equal",xlim=[-2, 2],ylim=[-2,2]) plt.title(r"$gamma_{1}$",fontsize="18") plt.xlabel(r"x ($ heta_{E}$)",fontsize ="15") plt.ylabel(r"y ($ heta_{E}$)",rotation="horizontal",fontsize="15") plt.xticks([-2.0,-1.5,-1.0,-0.5 ,0,0.5,1.0,1.5]) plt.xticks([-2,0,-1.5,-1.0,-0.5,0,0.5,1.0,1.5]) plt.imshow(g1out,extent=(-2,2, -2,2)) plt.axhline(y=0,linewidth=2,color="k",linestyle="--") plt.axvline(x=0,linewidth=2,color="k",linestyle ="--") e1 = patches.Ellipse((0,0),2,2,color="white") ax1.add_patch(e1) # subplot nummer 2 a x2 = fig.add_subplot(1,2,2,sharey=ax1,xlim=[-2,2],ylim=[-2,2]) plt.title(r"$gamma_{2}$",fontsize= "18") plt.xlabel(r"x ($ heta_{E}$)",fontsize="15") ax2.yaxis.set_major_formatter( NullFormatter() ) plt.axhline(y=0,linewidth=2,color ="k",linestyle="--") plt.axvline(x=0,linewidth=2,color="k",linestyle="--") plt.imshow(g2out,extent=(-2,2 ,-2,2)) e2 = patches.Ellipse((0,0),2,2,color="white") ax2.add_patch(e2) # subplot voor kleurenbalk ax3 = fig.add_subplot(1,1,1 ) ax3.axis("uit") cbar = plt.colorbar(ax=ax2) plt.show()