Matplotlib का make_axes_locatable
उपकरण आपको मौजूदा अक्ष के किनारे एक नई अक्ष को संभालने की अनुमति देता है। हालांकि, यह मूल धुरी का आकार बदलता है। इससे बचने का कोई रास्ता है क्या?मूल धुरी के आकार को बदलने के बिना विभाजक बनाएं?
import matplotlib.pyplot as pl
from mpl_toolkits.axes_grid import make_axes_locatable
import matplotlib.axes as maxes
fig = pl.figure()
ax1=pl.subplot(1,3,1)
ax1.imshow([[0,1],[2,0]])
ax1.yaxis.set_visible(False)
ax1.xaxis.set_visible(False)
ax2=pl.subplot(1,3,2)
ax2.imshow([[0,1],[2,0]])
ax2.yaxis.set_visible(False)
ax2.xaxis.set_visible(False)
ax3=pl.subplot(1,3,3)
ax3.imshow([[0,1],[2,0]])
ax3.yaxis.set_visible(False)
ax3.xaxis.set_visible(False)
pl.subplots_adjust(wspace=0)
divider = make_axes_locatable(ax1)
cax1 = divider.new_horizontal(size=0.2, pad=0.0, pack_start=True, axes_class=maxes.Axes)
pl.colorbar(ax1.images[0],cax=cax1)
cax1.yaxis.set_label_position('left')
cax1.yaxis.set_ticks_position('left')
fig.add_axes(cax1)
divider = make_axes_locatable(ax2)
cax2 = divider.new_vertical(size=0.2, pad=0.0, pack_start=True, axes_class=maxes.Axes)
fig.add_axes(cax2)
pl.colorbar(ax2.images[0],cax=cax2,orientation='horizontal')
# thin out the tick labels for visibility
for t in cax2.xaxis.get_majorticklabels()[::2]:
t.set_visible(False)
divider = make_axes_locatable(ax3)
cax3 = divider.new_horizontal(size=0.2, pad=0.0, pack_start=False, axes_class=maxes.Axes)
pl.colorbar(ax3.images[0],cax=cax3)
fig.add_axes(cax3)
समस्या यह है कि subplots अब विभिन्न आकारों हैं:
नीचे एक पूर्ण उदाहरण समस्या दिखा और यह कैसे पुन: पेश करने के लिए है। मुझे लगता है कि बाएं और दाएं संकुचित हो गए हैं, लेकिन बीच अपरिवर्तित है।
"सौंदर्य" अंतर मेरा डिफ़ॉल्ट विन्यास आइटम की वजह से है; मेरे पास डिफ़ॉल्ट रूप से 'इंटरपोलेशन =' निकटतम 'सेट है। – keflavich
यह सामान्य दृष्टिकोण काम करता प्रतीत होता है, लेकिन अगर यह हार्ड-कोड के बजाय चौड़ाई/ऊंचाई/लंबवत/क्षैतिज स्थिति उत्पन्न करने का कोई तरीका होता तो यह बेहतर होगा। – keflavich