Matplotlib में सबप्लॉट में शीर्षक कैसे जोड़ें?


225

मेरे पास एक आंकड़ा है जिसमें कई सबप्लॉट हैं।

fig = plt.figure(num=None, figsize=(26, 12), dpi=80, facecolor='w', edgecolor='k')
fig.canvas.set_window_title('Window Title')

# Returns the Axes instance
ax = fig.add_subplot(311) 
ax2 = fig.add_subplot(312) 
ax3 = fig.add_subplot(313) 

मैं सबप्लॉट्स में शीर्षक कैसे जोड़ूं?

fig.suptitleसभी ग्राफ़ में एक शीर्षक जोड़ता है और यद्यपि ax.set_title()मौजूद होता है, बाद वाला मेरे शीर्षक में कोई शीर्षक नहीं जोड़ता है।

आपके सहयोग के लिए धन्यवाद।

संपादित करें: टाइपो के बारे में सही set_title()। धन्यवाद रटगर्स Kassies

जवाबों:


201

ax.title.set_text('My Plot Title') काम भी करने लगता है।

fig = plt.figure()
ax1 = fig.add_subplot(221)
ax2 = fig.add_subplot(222)
ax3 = fig.add_subplot(223)
ax4 = fig.add_subplot(224)
ax1.title.set_text('First Plot')
ax2.title.set_text('Second Plot')
ax3.title.set_text('Third Plot')
ax4.title.set_text('Fourth Plot')
plt.show()

मेटप्लोटलिब सबप्लॉट पर शीर्षक जोड़ते हैं


किसी को हिस्टोग्राम के लिए फ़ॉन्ट आकार की समस्या होने के लिए, अजीब तरह से डिब्बे की संख्या को कम करना मुझे इसे बढ़ाने देता है। 500 से 100 तक गए।
mLstudent33

यदि आपको फोंटाइज़ निर्दिष्ट करने में सक्षम होने की आवश्यकता है, तो ax.set_title('title', fontsize=16)इसके बजाय उपयोग करें ।
टोबियास पीजी

234

ax.set_title() अलग-अलग उप-बिंदुओं के लिए शीर्षक निर्धारित करना चाहिए:

import matplotlib.pyplot as plt

if __name__ == "__main__":
    data = [1, 2, 3, 4, 5]

    fig = plt.figure()
    fig.suptitle("Title for whole figure", fontsize=16)
    ax = plt.subplot("211")
    ax.set_title("Title for first plot")
    ax.plot(data)

    ax = plt.subplot("212")
    ax.set_title("Title for second plot")
    ax.plot(data)

    plt.show()

क्या आप देख सकते हैं कि यह कोड आपके लिए काम करता है या नहीं? हो सकता है कि कुछ उन्हें बाद में अधिलेखित कर दें?


1
यह मेरे लिए काम करता है, matplotlib संस्करण 1.2.2 अजगर 2.7.5
NameOfTheRose

41

एक आशुलिपि जवाब मानते हुए import matplotlib.pyplot as plt:

plt.gca().set_title('title')

जैसे की:

plt.subplot(221)
plt.gca().set_title('title')
plt.subplot(222)
etc...

तब ज़रूरत से ज़्यादा ज़रूरत नहीं है चर।


8

यदि आप इसे कम करना चाहते हैं, तो आप लिख सकते हैं:

import matplolib.pyplot as plt
for i in range(4):
    plt.subplot(2,2,i+1).set_title('Subplot n°{}' .format(i+1))
plt.show()

यह इसे शायद कम स्पष्ट करता है लेकिन आपको अधिक लाइनों या चर की आवश्यकता नहीं है


1

यदि आपके पास कई छवियां हैं और आप उन्हें लूप करना चाहते हैं, तो उन्हें टाइटल्स के साथ-साथ 1 बाय 1 दिखाएं - यह वही है जो आप कर सकते हैं। Ax1, ax2, आदि को स्पष्ट रूप से परिभाषित करने की आवश्यकता नहीं है।

  1. पकड़ यह है कि आप कोड के लाइन 1 में डायनेमिक एक्सिस (कुल्हाड़ी) को परिभाषित कर सकते हैं और आप एक लूप के अंदर इसका शीर्षक सेट कर सकते हैं।
  2. 2D सरणी की पंक्तियाँ अक्ष (कुल्हाड़ी) की लंबाई (len) हैं
  3. प्रत्येक पंक्ति में 2 आइटम हैं अर्थात यह एक सूची के भीतर है (प्वाइंट नंबर 2)
  4. set_title का उपयोग शीर्षक सेट करने के लिए किया जा सकता है, एक बार उचित अक्षों (कुल्हाड़ी) या सबप्लॉट का चयन करने के बाद।
import matplotlib.pyplot as plt    
fig, ax = plt.subplots(2, 2, figsize=(6, 8))  
for i in range(len(ax)): 
    for j in range(len(ax[i])):
        ## ax[i,j].imshow(test_images_gr[0].reshape(28,28))
        ax[i,j].set_title('Title-' + str(i) + str(j))

1
fig, (ax1, ax2, ax3, ax4) = plt.subplots(nrows=1, ncols=4,figsize=(11, 7))

grid = plt.GridSpec(2, 2, wspace=0.2, hspace=0.5)

ax1 = plt.subplot(grid[0, 0])
ax2 = plt.subplot(grid[0, 1:])
ax3 = plt.subplot(grid[1, :1])
ax4 = plt.subplot(grid[1, 1:])

ax1.title.set_text('First Plot')
ax2.title.set_text('Second Plot')
ax3.title.set_text('Third Plot')
ax4.title.set_text('Fourth Plot')

plt.show()

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


0

एक समाधान जो मैं अधिक से अधिक उपयोग करना चाहता हूं वह यह है:

import matplotlib.pyplot as plt

fig, axs = plt.subplots(2, 2)  # 1
for i, ax in enumerate(axs.ravel()): # 2
    ax.set_title("Plot #{}".format(i)) # 3
  1. कुल्हाड़ियों की अपनी मनमानी संख्या बनाएँ
  2. axs.ravel () पंक्ति-प्रमुख शैली में आपकी 2-मंद वस्तु को 1-मंद वेक्टर में परिवर्तित करता है
  3. वर्तमान अक्ष-वस्तु को शीर्षक प्रदान करता है
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.