Matplotlib 2 Alt Grafik, 1 Renk Çubuğu

| | |

Matplotlib'de ikisi arasında paylaşılan tek bir renk çubuğuyla aynı y eksenini paylaşacak iki alt grafiğin nasıl elde edileceğini araştırmak için çok uzun zaman harcadım.

colorbar() işlevi, subplot1 veya subplot2'da, grafiği otomatik olarak ölçeklendirir, böylece renk çubuğu artı çizim "alt grafik" içine sığar sınırlayıcı kutu, iki yan yana grafiğin çok farklı iki boyutta olmasına neden oldu.

Bunu aşmak için, üçüncü bir alt grafik oluşturmaya çalıştım ve daha sonra yalnızca bir renk çubuğuyla hiçbir çizim oluşturmamak için hackledim. Mevcut. Tek sorun şu ki, şimdi iki grafiğin yükseklikleri ve genişlikleri eşit değil ve nasıl iyi görüneceğini bulamıyorum.

İşte kodum:

from __future__ bölümü içe aktar matplotlib.pyplot as plt olarak içe aktar numpy'yi matplotlib'den içe aktar yamaları matplotlib.ticker'dan içe aktar NullFormatter # SIS İşlevleri TE = 1 # Einstein yarıçapı g1 = lambda x,y: (TE/2) * (y**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)) koordinatları = np.linspace(-2,2,400 ) X,Y = np.meshgrid(koordlar,koordlar) g1out = g1(X,Y) g2out = g2(X,Y) kappaout = kappa(X,Y) for i in range(len(koordlar)): j için 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 number 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="yatay",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 = yamalar.Ellipse((0,0),2,2,color="beyaz") ax1.add_patch(e1) # alt nokta numarası 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 = yamalar.Ellipse((0,0),2,2,color="beyaz") ax2.add_patch(e2) # colorbar için subplot ax3 = fig.add_subplot(1,1,1) ) ax3.axis("off") cbar = plt.colorbar(ax=ax2) plt.show()