কীভাবে ম্যাটপ্ল্লোব-এ সাবপ্লটগুলিতে শিরোনাম যুক্ত করবেন?


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()। ধন্যবাদ রুটার ক্যাসিজ

উত্তর:


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()

matplotlib সাবপ্লটগুলিতে শিরোনাম যুক্ত করুন


হিস্টোগ্রামের জন্য ফন্টের আকারে যে কারওর জন্য সমস্যা রয়েছে, বিস্ময়করভাবে বিনের সংখ্যা হ্রাস করতে আমাকে এটিকে বাড়িয়ে দিন। 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
এটি আমার জন্য কাজ করে, ম্যাটপ্ল্লোলিব সংস্করণ ১.২.২ পাইথন
২.

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. 2 ডি অ্যারের সারি অক্ষ (অক্ষ) দৈর্ঘ্য (লেন) হয়
  3. প্রতিটি সারিতে 2 টি আইটেম থাকে এটি একটি তালিকার মধ্যে তালিকা (পয়েন্ট নং 2)
  4. set_title শিরোনাম সেট করতে ব্যবহার করা যেতে পারে, একবার সঠিক অক্ষ (অক্ষ) বা subplot নির্বাচন করা হয়।
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. বর্তমান অক্ষ - বস্তুর শিরোনাম বরাদ্দ করে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.