मैं एक सरल फ़ंक्शन बनाने की कोशिश कर रहा हूं जो एक सबप्लॉट उदाहरण (matplotlib.axes._subplots.AxesSubplot
) लेता है और इसके प्रक्षेपण को दूसरे प्रक्षेपण में बदलता है, उदाहरण के लिए, cartopy.crs.CRS
अनुमानों में से एक के लिए।मैं मौजूदा अक्ष के matplotlib के सबप्लॉट प्रोजेक्शन को कैसे बदलूं?
विचार लग रहा है इस
import cartopy.crs as ccrs
import matplotlib.pyplot as plt
def make_ax_map(ax, projection=ccrs.PlateCarree()):
# set ax projection to the specified projection
...
# other fancy formatting
ax2.coastlines()
...
# Create a grid of plots
fig, (ax1, ax2) = plt.subplots(ncols=2)
# the first subplot remains unchanged
ax1.plot(np.random.rand(10))
# the second one gets another projection
make_ax_map(ax2)
बेशक तरह कुछ, मैं सिर्फ fig.add_subplot()
फ़ंक्शन का उपयोग कर सकते हैं:
fig = plt.figure(figsize=(10,5))
ax1 = fig.add_subplot(121)
ax1.plot(np.random.rand(10))
ax2 = fig.add_subplot(122,projection=ccrs.PlateCarree())
ax2.coastlines()
लेकिन अगर वहाँ एक उचित matplotlib
एक subplot अक्ष बदलने की विधि मैं सोच रहा था प्रक्षेपण के बाद इसे परिभाषित किया गया था। Matplotlib एपीआई पढ़ना दुर्भाग्य से मदद नहीं की थी।
धन्यवाद! और बस पुष्टि करने के लिए, 'प्रक्षेपण' कीवर्ड एक ही समय में सभी सबप्लॉट्स के लिए कक्षा निर्धारित करता है, इसलिए 'subplot_kw' में कई अनुमानों को पारित करने का कोई तरीका नहीं है? उदा। 'plt.subplots (ncols = 2) 'द्वारा बनाए गए सबप्लॉट सेट के दूसरे कॉलम के लिए पहले कॉलम के लिए प्रक्षेपण =' ध्रुवीय 'और' projection = ccrs.PlateCarree() '? –
'subplot_kw' में कीवर्ड प्रत्येक अक्ष को पास कर दिए जाते हैं, इसलिए मुझे नहीं लगता कि आप जो भी वर्णन कर सकते हैं वह कर सकते हैं। 'सबप्लॉट्स' फ़ंक्शन मूल उपयोग केस को पूरा करने के लिए एक सुविधाजनक आवरण है, यदि आपको कुछ और चाहिए तो आप 'add_subplot' या इसी तरह का उपयोग करके अपना स्वयं का रैपर फ़ंक्शन लिख सकते हैं। – ajdawson
क्या ImageGrid के साथ ऐसा करने का कोई तरीका है? मैड स्पेस और कलरबार प्लेसमेंट पर नियंत्रण रखने में सक्षम होना अच्छा होगा, जो कि इमेजग्रिड अनुमति देता है, लेकिन मुझे ग्रिड में सबप्लॉट्स के प्रक्षेपण को सेट करने का कोई तरीका नहीं दिखता है। –