इसे करने बहुत सारे तरीके हैं। इसका आसान तरीका यह है कि प्लॉट के y- लेबल्स और टाइट्स का फायदा उठाया जाए और उसके बाद fig.tight_layout()
लेबल्स के लिए जगह बनाई जाए। वैकल्पिक रूप से, आप अतिरिक्त पाठ को सही स्थान पर रख सकते हैं annotate
और फिर इसके लिए अर्ध-मैन्युअल रूप से जगह बना सकते हैं।
यदि आपके पास अपनी कुल्हाड़ियों पर y- लेबल नहीं हैं, तो पहली पंक्ति और कुल्हाड़ियों के स्तंभ के y- लेबल का शोषण करना आसान है।
import matplotlib.pyplot as plt
cols = ['Column {}'.format(col) for col in range(1, 4)]
rows = ['Row {}'.format(row) for row in ['A', 'B', 'C', 'D']]
fig, axes = plt.subplots(nrows=4, ncols=3, figsize=(12, 8))
for ax, col in zip(axes[0], cols):
ax.set_title(col)
for ax, row in zip(axes[:,0], rows):
ax.set_ylabel(row, rotation=0, size='large')
fig.tight_layout()
plt.show()
यदि आपके पास y- लेबल हैं, या यदि आप थोड़ा अधिक लचीलापन पसंद करते हैं, तो आप annotate
लेबल लगाने के लिए उपयोग कर सकते हैं । यह अधिक जटिल है, लेकिन आपको पंक्ति और स्तंभ लेबल के अलावा व्यक्तिगत प्लॉट शीर्षक, यलैबेल आदि की अनुमति देता है।
import matplotlib.pyplot as plt
from matplotlib.transforms import offset_copy
cols = ['Column {}'.format(col) for col in range(1, 4)]
rows = ['Row {}'.format(row) for row in ['A', 'B', 'C', 'D']]
fig, axes = plt.subplots(nrows=4, ncols=3, figsize=(12, 8))
plt.setp(axes.flat, xlabel='X-label', ylabel='Y-label')
pad = 5
for ax, col in zip(axes[0], cols):
ax.annotate(col, xy=(0.5, 1), xytext=(0, pad),
xycoords='axes fraction', textcoords='offset points',
size='large', ha='center', va='baseline')
for ax, row in zip(axes[:,0], rows):
ax.annotate(row, xy=(0, 0.5), xytext=(-ax.yaxis.labelpad - pad, 0),
xycoords=ax.yaxis.label, textcoords='offset points',
size='large', ha='right', va='center')
fig.tight_layout()
fig.subplots_adjust(left=0.15, top=0.95)
plt.show()
is_first_col()
,is_last_col()
,is_first_row()
औरis_last_row()
भी इस संदर्भ में सुविधाजनक हो सकता है।