पायलॉट के साथ सभी सबप्लॉट्स के ऊपर एकल, मुख्य शीर्षक कैसे सेट करें?


219

मैं उपयोग कर रहा हूं pyplot। मेरे 4 सबप्लॉट हैं। सभी उपपलों के ऊपर एकल, मुख्य शीर्षक कैसे सेट करें? title()इसे अंतिम उपप्लॉट के ऊपर सेट करता है।

जवाबों:


283

उपयोग pyplot.suptitleया Figure.suptitle:

import matplotlib.pyplot as plt
import numpy as np

fig=plt.figure()
data=np.arange(900).reshape((30,30))
for i in range(1,5):
    ax=fig.add_subplot(2,2,i)        
    ax.imshow(data)

fig.suptitle('Main title') # or plt.suptitle('Main title')
plt.show()

यहां छवि विवरण दर्ज करें


1
के साथ काम करता है suptitle। फिर भी, मैंने आपकी "बेशर्म हैक" देखी। :)
जकूब एम।

6
ध्यान दें, यह है plt.suptitle()और नहीं plt.subtitle()। मुझे शुरुआत में इस बात का अहसास नहीं हुआ और मुझे एक बड़ी गलती हो गई! : डी
दातमन

127

अपने स्वयं के भूखंडों पर इसे लागू करते समय कुछ बिंदु मुझे उपयोगी लगते हैं:

  • मैं fig.suptitle(title)बजाय का उपयोग करने की संगतता पसंद करते हैंplt.suptitle(title)
  • fig.tight_layout()शीर्षक का उपयोग करते समय के साथ स्थानांतरित किया जाना चाहिएfig.subplots_adjust(top=0.88)
  • नीचे दिए गए फोंट के बारे में जवाब देखें

उदाहरण कोड matplotlib डॉक्स में सबप्लॉट डेमो से लिया गया है और एक मास्टर शीर्षक के साथ समायोजित किया गया है।

एक अच्छा 4x4 भूखंड

import matplotlib.pyplot as plt
import numpy as np

# Simple data to display in various forms
x = np.linspace(0, 2 * np.pi, 400)
y = np.sin(x ** 2)

fig, axarr = plt.subplots(2, 2)
fig.suptitle("This Main Title is Nicely Formatted", fontsize=16)

axarr[0, 0].plot(x, y)
axarr[0, 0].set_title('Axis [0,0] Subtitle')
axarr[0, 1].scatter(x, y)
axarr[0, 1].set_title('Axis [0,1] Subtitle')
axarr[1, 0].plot(x, y ** 2)
axarr[1, 0].set_title('Axis [1,0] Subtitle')
axarr[1, 1].scatter(x, y ** 2)
axarr[1, 1].set_title('Axis [1,1] Subtitle')

# # Fine-tune figure; hide x ticks for top plots and y ticks for right plots
plt.setp([a.get_xticklabels() for a in axarr[0, :]], visible=False)
plt.setp([a.get_yticklabels() for a in axarr[:, 1]], visible=False)

# Tight layout often produces nice results
# but requires the title to be spaced accordingly
fig.tight_layout()
fig.subplots_adjust(top=0.88)

plt.show()

2
बस जोड़ने के figure.suptitle()लिए पर्याप्त नहीं है क्योंकि सबप्लॉट के शीर्षक suptitile के साथ मिश्रण करेंगे, fig.subplots_adjust(top=0.88)अच्छा है।
गोइंग मैयवे

43

यदि आपके सबप्लॉट में भी शीर्षक हैं, तो आपको मुख्य शीर्षक आकार को समायोजित करने की आवश्यकता हो सकती है:

plt.suptitle("Main Title", size=16)

फ़ॉन्ट का आकार बदलना इसे बहुत बेहतर बनाता है। धन्यवाद!
वोक

8
अजगर 2.7 में यह आकार के बजाय फोंटाइज़ हैplt.suptitle("Main Title", fontsize=16)
17
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.