माटप्लोटलिब 2 सबप्लॉट, 1 कलरबार

| | |

मैंने पूरी तरह से बहुत लंबा शोध किया है कि कैसे दो सबप्लॉट को समान y-अक्ष साझा करने के लिए एक ही कलरबार के साथ Matplotlib में दोनों के बीच साझा किया जाए।

क्या हो रहा था कि जब मैंने कॉल किया colorbar() फ़ंक्शन या तो subplot1 या subplot2 में काम करता है, यह प्लॉट को ऑटोस्केल करेगा जैसे कि कलरबार प्लस प्लॉट "सबप्लॉट" के अंदर फिट होगा बाउंडिंग बॉक्स, जिसके कारण दो अगल-बगल के प्लॉट दो अलग-अलग आकार के हो गए।

इसके आसपास जाने के लिए, मैंने एक तीसरा सबप्लॉट बनाने की कोशिश की, जिसे मैंने तब हैक किया था ताकि केवल एक कलरबार के साथ कोई प्लॉट प्रस्तुत न किया जा सके। वर्तमान। एकमात्र समस्या यह है कि, अब दो भूखंडों की ऊंचाई और चौड़ाई असमान हैं, और मैं यह नहीं समझ सकता कि इसे कैसे ठीक किया जाए।

यह मेरा कोड है:

__future__ से आयात प्रभाग आयात matplotlib.pyplot के रूप में plt आयात numpy as np matplotlib से matplotlib.ticker आयात पैच से आयात करें NullFormatter # SIS फ़ंक्शंस TE = 1 # आइंस्टीन त्रिज्या g1 = लैम्ब्डा x, y: (TE/2) * (वाई**2 -x**2)/((x**2+y**2)**(3/2)) g2 = लैम्ब्डा x,y: -1*TE*x*y / ((x**2+) y**2)**(3/2)) कप्पा = लैम्ब्डा x,y: TE / (2*np.sqrt(x**2+y**2)) निर्देशांक = 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)): j के लिए रेंज में (लेन (कोर्ड्स)): अगर np.sqrt(coords[i]**2+coords[j]**2) <= TE: g1out[i][j]=0 g2out[i][j ]=0 अंजीर = plt.figure() fig.subplots_adjust(wspace=0,hspace=0) # सबप्लॉट नंबर 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 = पैच। अंडाकार ((0,0), 2,2, रंग = "सफेद") ax1.add_patch(e1) # सबप्लॉट नंबर 2 ए 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 = पैच। दीर्घवृत्त ((0,0),2,2,रंग = "सफेद") ax2.add_patch(e2) # कलरबार ax3 के लिए सबप्लॉट = fig.add_subplot(1,1,1 ) ax3.axis("off") cbar = plt.colorbar(ax=ax2) plt.show()