পাইথন ম্যাটপ্লাটলিব চিত্র শিরোনাম কুড়িটি ব্যবহার করার সময় অক্ষ লেবেলকে ওভারল্যাপ করে


139

আমি একইভাবে গ্রাফটিতে দু'টি পৃথক পরিমাণে প্লট করার চেষ্টা করছি নিম্নরূপ:

fig = figure()
ax = fig.add_subplot(111)
ax.plot(T, r, 'b-', T, R, 'r-', T, r_geo, 'g-')
ax.set_yscale('log')
ax.annotate('Approx. sea level', xy=(Planet.T_day*1.3,(Planet.R)/1000), xytext=(Planet.T_day*1.3, Planet.R/1000))
ax.annotate('Geostat. orbit', xy=(Planet.T_day*1.3, r_geo[0]), xytext=(Planet.T_day*1.3, r_geo[0]))
ax.set_xlabel('Rotational period (hrs)')
ax.set_ylabel('Orbital radius (km), logarithmic')
ax.set_title('Orbital charts for ' + Planet.N, horizontalalignment='center', verticalalignment='top')


ax2 = ax.twiny()
ax2.plot(v,r,'k-')
ax2.set_xlabel('Linear speed (ms-1)')

show()

এবং উপাত্তটি সূক্ষ্মভাবে উপস্থাপিত হয়েছে, তবে আমার সমস্যা হচ্ছে যে চিত্রের শিরোনামটি সেকেন্ডারি এক্স অক্ষের উপর অক্ষ লেবেলগুলির সাথে ওভারল্যাপ করছে যাতে এটি সবেমাত্র স্পষ্টতই হয় (আমি এখানে একটি চিত্রের উদাহরণ পোস্ট করতে চেয়েছিলাম, তবে আমার একটি নেই) এখনও যথেষ্ট উচ্চ প্রতিনিধি)।

আমি জানতে চাইছি যে শিরোনামটি কয়েক দশক পিক্সেলের উপরে সরাসরি স্থানান্তরিত করার জন্য সোজা উপায় আছে, যাতে চার্টটি সুন্দর দেখায়।


1
স্ট্যাক ওভারফ্লোতে স্বাগতম! আপনি যদি আপনার ছবিটির কোনও ইমগার পোস্টিংয়ের সাথে লিঙ্ক করেন তবে কোনও উচ্চতর প্রতিনিধি আপনার জন্য ছবিটি আপনার পোস্টে এম্বেড করবে।
লাগানো

@ ম্যাজিক - আপনি কি এই প্রশ্নের জন্য কোন উত্তর গ্রহণ করবেন তা পুনর্বিবেচনা করবেন? ম্যাটপ্লটলিব এই যথাযথ প্রয়োজনটি পরিচালনা করার জন্য একটি বিল্টিন মেকানিজম যুক্ত করেছেন (নীচে সর্বাধিক ভোট দেওয়া উত্তর)
আমেলিও ওয়াজকেজ-রেইনা

উত্তর:


243

আমি ম্যাটপ্ল্লোলিব পরবর্তী সংস্করণগুলিতে এটি একটি নতুন বৈশিষ্ট্য কিনা তা নিশ্চিত নই, তবে কমপক্ষে ১.৩.১ এর জন্য এটি কেবল সহজ:

plt.title(figure_title, y=1.08)

এটি এর জন্যও কাজ করে plt.suptitle()তবে (এখনও) এর জন্য নয় plt.xlabel()etc.


6
লেবেলগুলির জন্য আপনি যুক্তিটি সেট করতে পারেন labelpad, এখানে দেখুন
ফেলিক্স হফম্যান

1
এর মূল্য কী, এটি কোনও নতুন বৈশিষ্ট্য নয়। titleগ্রহণ করেছে xএবং yখুব দীর্ঘ সময়ের জন্য তর্ক করেছে (যতক্ষণ না আমি মনে রাখতে পারি, যে কোনও হারে)।
জো কিংটন

3
plt.set_title ('শিরোনামের স্ট্রিং', y = 1.08) আমার পক্ষে কাজ করে।
ইউ শেন

3
যদি কেউ ব্যাখ্যা করে যে ১.০৮ ইউনিট কী এবং ডিফল্টগুলি কী। আমার বোধগম্যতা হল ডিফল্টটি 1
kon psych

3
@ জোহানকমিংসগুলি মনে হয় ডিফল্ট মান y = 1 এবং ইউনিটগুলি হ'ল অক্ষের ভগ্নাংশ ", অর্থাৎ y = 0.5 এর অর্থ শিরোনামটি অক্ষের মাঝখানে থাকে এবং y = 0 এর অর্থ শিরোনামটি নীচের ঠিক নীচে থাকে above অক্ষ।
Herrlich10

33

ব্যবহারটি ভুলে যান plt.titleএবং সাথে সরাসরি পাঠ্যটি রাখুন plt.text। একটি অত্যুক্ত-অতিরঞ্জিত উদাহরণ নীচে দেওয়া হল:

import pylab as plt

fig = plt.figure(figsize=(5,10))

figure_title = "Normal title"
ax1  = plt.subplot(1,2,1)

plt.title(figure_title, fontsize = 20)
plt.plot([1,2,3],[1,4,9])

figure_title = "Raised title"
ax2  = plt.subplot(1,2,2)

plt.text(0.5, 1.08, figure_title,
         horizontalalignment='center',
         fontsize=20,
         transform = ax2.transAxes)
plt.plot([1,2,3],[1,4,9])

plt.show()

এখানে চিত্র বর্ণনা লিখুন


@ ব্যবহারকারী 815423426 হ্যাঁ, tight_layoutএখনও অ-মানক স্থান নির্ধারণের সাথে দুর্দান্ত খেলবে বলে মনে হয় না। সম্ভবত আপনি একটি বাগ রিপোর্ট করতে পারেন?
হুকড

2
আমি কাছাকাছি যখন tight_layout ব্যবহার করে, অন্তত যখন আপনি আপনার চক্রান্ত ব্যবহার করে সংরক্ষণ করুন একটি কাজ পাওয়া figure.savefig () । যদি title = plt.title(...)আপনি বিকল্প ব্যবহার করে শিরোনাম প্রায় শক্তভাবে চক্রান্ত ফ্রেমে নির্দিষ্ট করতে পারেন তারপর bbox_extra_artists:figure.savefig(filename, bbox_extra_artists=(title), bbox_inches='tight')
junkaholik

10
ax.set_title('My Title\n', fontsize="15", color="red")
plt.imshow(myfile, origin="upper")

আপনি যদি '\n'আপনার শিরোনাম স্ট্রিংয়ের পরে ডানদিকে রাখেন , প্লটটি শিরোনামের ঠিক নীচে আঁকা। এটিও দ্রুত সমাধান হতে পারে।


8

এক্স-লেবেলটি একটি সাবপ্লট শিরোনাম ওভারল্যাপ করে আমার সমস্যা ছিল; এটি আমার পক্ষে কাজ করেছে:

import matplotlib.pyplot as plt
fig, ax = plt.subplots(2, 1)
ax[0].scatter(...)
ax[1].scatter(...)
plt.tight_layout()
.
.
.
plt.show()

আগে

এখানে চিত্র বর্ণনা লিখুন

পরে

এখানে চিত্র বর্ণনা লিখুন

রেফারেন্স:



4

আপনি এই ক্ষেত্রে প্যাড ব্যবহার করতে পারেন:

ax.set_title("whatever", pad=20)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.