ম্যাটপ্ল্লোলিব প্লটের উপরে বাম কোণে পাঠ্য রচনা করা


112

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

আমি উদাহরণস্বরূপ স্ক্রেটারপ্লোটের স্কেলটি প্লট করা হচ্ছে তার স্কেলটি আদর্শভাবে না জেনে এটি করতে চাই, যেহেতু এটি ডেটাसेट থেকে ডেটা সেটে পরিবর্তিত হবে। আমি কেবল এটি পাঠ্যটি মোটামুটি উপরের বামে বা মোটামুটি উপরের ডানদিকে থাকতে চাই। কিংবদন্তি টাইপ পজিশনিংয়ের সাথে এটি কোনওভাবেই ছড়িয়ে পড়া প্লটের পয়েন্টগুলির সাথে ওভারল্যাপ হওয়া উচিত নয়।

ধন্যবাদ!


আপনি যদি নিজের পাঠ্যটি একটি বাক্সে রাখতে চান স্ট্যাকওভারফ্লো.com
জিজ্ঞাসা /

1
আমি মনে করি এটি এই প্রশ্নের সদৃশ । সদৃশ প্রশ্নের এমনকি আরও ভাল উত্তর রয়েছে, যদিও এখানে দেওয়া ধরণের উত্তর (ব্যবহার করা textএবং ax.transAxes) তাদের মধ্যে নেই।
ImportanceOfBeingEnnest

উত্তর:


162

আপনি ব্যবহার করতে পারেন text

text(x, y, s, fontsize=12)

text স্থানাঙ্ক অক্ষের তুলনায় দেওয়া যেতে পারে, সুতরাং আপনার পাঠ্যের অবস্থান প্লটের আকারের চেয়ে পৃথক হবে:

ডিফল্ট রূপান্তরটি উল্লেখ করে যে পাঠ্যটি ডেটা কোর্ডে রয়েছে, বিকল্পভাবে, আপনি অক্ষের কর্ডগুলিতে পাঠ্য নির্দিষ্ট করতে পারেন (0,0 নিম্ন-বাম এবং 1,1 উপরের-ডানদিকে)। নীচের উদাহরণটি অক্ষের মাঝে পাঠ্য রাখে ::

text(0.5, 0.5,'matplotlib',
     horizontalalignment='center',
     verticalalignment='center',
     transform = ax.transAxes)

আপনার বিক্ষিপ্তের যে কোনও বিন্দুতে পাঠ্যকে হস্তক্ষেপে আটকাতে আরও কঠিন আফিক। সহজ পদ্ধতিটি হ'ল y_axis (ymax in ylim((ymin,ymax))) আপনার পয়েন্টের সর্বাধিক y- স্থানাঙ্কের থেকে কিছুটা বেশি একটি মানকে সেট করা । এইভাবে আপনার কাছে সর্বদা পাঠ্যের জন্য এই মুক্ত স্থান থাকবে।

সম্পাদনা: এখানে আপনার একটি উদাহরণ রয়েছে:

In [17]: from pylab import figure, text, scatter, show
In [18]: f = figure()
In [19]: ax = f.add_subplot(111)
In [20]: scatter([3,5,2,6,8],[5,3,2,1,5])
Out[20]: <matplotlib.collections.CircleCollection object at 0x0000000007439A90>
In [21]: text(0.1, 0.9,'matplotlib', ha='center', va='center', transform=ax.transAxes)
Out[21]: <matplotlib.text.Text object at 0x0000000007415B38>
In [22]:

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

হা এবং ভি প্যারামিটারগুলি সন্নিবেশ বিন্দুর তুলনায় আপনার পাঠ্যের প্রান্তিককরণ সেট করে। অর্থাত। হা = 'বাম' ফ্রেমটি ম্যানুয়ালি হ্রাস করা হলে (সংকীর্ণ করা হয়েছে) বাম অক্ষের বাইরে যেতে একটি দীর্ঘ পাঠ্য প্রতিরোধ করার জন্য একটি ভাল সেট।


আমি কেন্দ্রীকরণ পেয়েছি তবে কীভাবে আমি এটি শীর্ষে উঠতে পারি? আমি "

1
আপনাকে অবশ্যই x, y মানগুলির সাথে খেলতে হবে যেমন নির্দেশিত ( 0,0 নিম্ন-বাম এবং 1,1 উপরের-ডান )। সম্পাদনা দেখুন
joaquin

2
@ ব্যবহারকারী 4545456262626 আমদানিগুলি: from pylab import figure, text, scatter, show উত্তরের কোডটি পাইব্ল মোডে একটি আইপথন কনসোলে কার্যকর করা হয়েছিল যেখানে সুস্পষ্ট আমদানিগুলি প্রয়োজনীয় ছিল না। একটি পরিষ্কার পরিবেশে আপনাকে উপরেরটি আমদানি করতে show()হবে এবং প্লটটি দেখতে হবে
joaquin

5

একটি সমাধান হ'ল plt.legendফাংশনটি ব্যবহার করা , এমনকি যদি আপনি প্রকৃত কিংবদন্তি না চান। আপনি locকীটার্ম ব্যবহার করে কিংবদন্তি বাক্সের স্থান নির্দিষ্ট করতে পারেন । এই ওয়েবসাইটটিতে আরও তথ্য পাওয়া যাবে তবে আমি একটি উদাহরণও অন্তর্ভুক্ত করেছি যাতে কীভাবে কিংবদন্তি স্থাপন করা যায়:

ax.scatter(xa,ya, marker='o', s=20, c="lightgreen", alpha=0.9)
ax.scatter(xb,yb, marker='o', s=20, c="dodgerblue", alpha=0.9)
ax.scatter(xc,yc marker='o', s=20, c="firebrick", alpha=1.0)
ax.scatter(xd,xd,xd, marker='o', s=20, c="goldenrod", alpha=0.9)
line1 = Line2D(range(10), range(10), marker='o', color="goldenrod")
line2 = Line2D(range(10), range(10), marker='o',color="firebrick")
line3 = Line2D(range(10), range(10), marker='o',color="lightgreen")
line4 = Line2D(range(10), range(10), marker='o',color="dodgerblue")
plt.legend((line1,line2,line3, line4),('line1','line2', 'line3', 'line4'),numpoints=1, loc=2) 

নোট করুন কারণ loc=2, কিংবদন্তিটি প্লটের উপরের-বাম কোণে রয়েছে। এবং যদি পাঠটি প্লটের সাথে ওভারল্যাপ হয় তবে আপনি এটি ব্যবহার করে এটি আরও ছোট করে তুলতে পারবেন legend.fontsizeযা কিংবদন্তিকে আরও ছোট করে তুলবে।

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