আপনি খুব সহজেই আপনার কোডটিতে পরিবর্তন করতে পারেন এমন একটি জিনিস আপনি fontsize
শিরোনামগুলির জন্য ব্যবহার করছেন। যাইহোক, আমি ধরে নিচ্ছি যে আপনি কেবল এটি করতে চান না!
ব্যবহারের কিছু বিকল্প fig.subplots_adjust(top=0.85)
:
সাধারণত tight_layout()
ভাল অবস্থানে সমস্ত কিছুকে স্থিতি করতে খুব ভাল কাজ করে যাতে তারা ওভারল্যাপ না করে। কারণ tight_layout()
না এই ক্ষেত্রে সাহায্যের কারণ নেই tight_layout()
fig.suptitle () একাউন্টে নেয় না। গিটহাবে এটি সম্পর্কে একটি উন্মুক্ত সমস্যা রয়েছে: https://github.com/matplotlib/matplotlib/issues/829 [একটি পূর্ণ জ্যামিতি পরিচালক প্রয়োজনের কারণে 2014 সালে বন্ধ - https://github.com/matplotlib/matplotlib এ স্থানান্তরিত / ইস্যু / 1109 ]।
আপনি যদি থ্রেডটি পড়েন তবে জড়িত আপনার সমস্যার সমাধান রয়েছে GridSpec
। মূলটি হ'ল কোয়ার্গ tight_layout
ব্যবহার করে কল করার সময় চিত্রের শীর্ষে কিছু স্থান rect
রেখে দেওয়া। আপনার সমস্যার জন্য, কোডটি হয়ে যায়:
গ্রিডস্পেক ব্যবহার করে
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
f = np.random.random(100)
g = np.random.random(100)
fig = plt.figure(1)
gs1 = gridspec.GridSpec(1, 2)
ax_list = [fig.add_subplot(ss) for ss in gs1]
ax_list[0].plot(f)
ax_list[0].set_title('Very Long Title 1', fontsize=20)
ax_list[1].plot(g)
ax_list[1].set_title('Very Long Title 2', fontsize=20)
fig.suptitle('Long Suptitle', fontsize=24)
gs1.tight_layout(fig, rect=[0, 0.03, 1, 0.95])
plt.show()
ফলাফল:
হতে পারে আপনার GridSpec
জন্য কিছুটা ওভারকিল, বা আপনার আসল সমস্যাটি আরও অনেক বড় ক্যানভাসে বা অন্য জটিলতায় আরও অনেক সাবপ্লট জড়িত। একটি সাধারণ হ্যাক হ'ল এটিকে অনুকরণ annotate()
করার জন্য স্থানাঙ্কগুলি ব্যবহার এবং লক 'figure fraction'
করা suptitle
। যদিও আউটপুটটি একবার দেখুন, আপনার কিছু সূক্ষ্ম সামঞ্জস্য করার প্রয়োজন হতে পারে। নোট করুন যে এই দ্বিতীয় সমাধানটি ব্যবহার করে নাtight_layout()
।
সহজ সমাধান (যদিও এটি সূক্ষ্ম সুরের প্রয়োজন হতে পারে)
fig = plt.figure(2)
ax1 = plt.subplot(121)
ax1.plot(f)
ax1.set_title('Very Long Title 1', fontsize=20)
ax2 = plt.subplot(122)
ax2.plot(g)
ax2.set_title('Very Long Title 2', fontsize=20)
# fig.suptitle('Long Suptitle', fontsize=24)
# Instead, do a hack by annotating the first axes with the desired
# string and set the positioning to 'figure fraction'.
fig.get_axes()[0].annotate('Long Suptitle', (0.5, 0.95),
xycoords='figure fraction', ha='center',
fontsize=24
)
plt.show()
ফলাফল:
[ Python
২.7.৩ (64৪-বিট) এবং ১.২.০ ব্যবহার করে matplotlib
]