Matplotlib.pyplot এর সাথে কীভাবে কিংবদন্তির আকার পরিবর্তন করবেন


323

এখানে সাধারণ প্রশ্ন: আমি আমার কিংবদন্তির আকারটি matplotlib.pyplotছোট হতে (যেমন, পাঠ্যকে ছোট হতে) ব্যবহার করার চেষ্টা করছি । আমি যে কোডটি ব্যবহার করছি তা এরকম কিছু হয়:

plot.figure()
plot.scatter(k, sum_cf, color='black', label='Sum of Cause Fractions')
plot.scatter(k, data[:, 0],  color='b', label='Dis 1: cf = .6, var = .2')
plot.scatter(k, data[:, 1],  color='r',  label='Dis 2: cf = .2, var = .1')
plot.scatter(k, data[:, 2],  color='g', label='Dis 3: cf = .1, var = .01')
plot.legend(loc=2)

উত্তর:


542

আপনি propকীওয়ার্ডটি সামঞ্জস্য করে কিংবদন্তির জন্য একটি পৃথক ফন্টের আকার সেট করতে পারেন ।

plot.legend(loc=2, prop={'size': 6})

এটি matplotlib.font_manager.FontPropertiesবৈশিষ্ট্যের সাথে সম্পর্কিত কীওয়ার্ডগুলির একটি অভিধান নেয় । কিংবদন্তির জন্য ডকুমেন্টেশন দেখুন :

মূলশব্দ আর্গুমেন্ট:

prop: [ None | FontProperties | dict ]
    A matplotlib.font_manager.FontProperties instance. If prop is a 
    dictionary, a new instance will be created with prop. If None, use
    rc settings.

মূল শব্দটি ব্যবহার করা 1.2.1 সংস্করণ অনুসারেও সম্ভব fontsize


1
আপনি কি আমাকে বলতে পারেন আমি কোথা থেকে বিস্তারিত জানতে plot.rcParams.updateপারি?
হ্যাকস

64

এটি করা উচিত

import pylab as plot
params = {'legend.fontsize': 20,
          'legend.handlelength': 2}
plot.rcParams.update(params)

তারপরে প্লটটি করুন।

এখানে আরও এক টন আরসিপ্যারাম রয়েছে, সেগুলি ম্যাটপ্লোটিলিবার্ক ফাইলটিতেও সেট করা যেতে পারে।

এছাড়াও সম্ভবত আপনি এটি একটি matplotlib.font_manager.FontPropertiesউদাহরণ পাস করে পরিবর্তন করতে পারেন তবে এটি আমি কীভাবে করব তা জানি না। -> ইয়ানের উত্তর দেখুন।


2
বাmatplotlib.rc('legend', fontsize=0.5, linewidth=2)
এরিক

2
এর legend.handlelengthপরিবর্তে হওয়া উচিতlegend.linewidth
এমমেট বি

ফন্টম্যানেজারের get_default_size () সদস্যটি ডিফল্ট আকার দেয়। আমার জন্য এটি 12
গুহুর

1
"পাইল্যাব" এর ব্যবহার আর উত্সাহিত নয়: matplotlib.org/faq/…
হ্যাগবার্ড

51

ব্যবহার import matplotlib.pyplot as plt

পদ্ধতি 1: কিংবদন্তি কল করার সময় ফন্টসাইজ নির্দিষ্ট করুন (পুনরাবৃত্তি)

plt.legend(fontsize=20) # using a size in points
plt.legend(fontsize="x-large") # using a named size

এই পদ্ধতির সাহায্যে আপনি প্রতিটি কিংবদন্তির জন্য ফন্টসাইজটি তৈরি করতে পারবেন (আপনাকে বিভিন্ন ফন্টফাইজের সাথে একাধিক কিংবদন্তী দেওয়ার অনুমতি দেয়)। যাইহোক, প্রতিবার কোনও কিংবদন্তি তৈরি করার সময় আপনাকে ম্যানুয়ালি সবকিছু টাইপ করতে হবে।

(দ্রষ্টব্য: @ ম্যাথিয়াস 711 তার উত্তরে উপলব্ধ নামযুক্ত ফন্টগুলি তালিকাভুক্ত করেছে)

পদ্ধতি 2: আরসিপ্যারামে ফন্টসাইজ নির্দিষ্ট করুন (সুবিধাজনক)

plt.rc('legend',fontsize=20) # using a size in points
plt.rc('legend',fontsize='medium') # using a named size

এই পদ্ধতির সাহায্যে আপনি ডিফল্ট কিংবদন্তি ফন্টসাইজ সেট করেন এবং সমস্ত কিংবদন্তি স্বয়ংক্রিয়ভাবে এটি ব্যবহার করবেন আপনি যদি অন্যভাবে পদ্ধতি 1 ব্যবহার করে নির্দিষ্ট না করেন তবে এর অর্থ আপনি আপনার কোডের শুরুতে আপনার কিংবদন্তি ফন্টসাইজ সেট করতে পারেন এবং প্রতিটি স্বতন্ত্র কিংবদন্তির জন্য সেট করার বিষয়ে চিন্তা করবেন না not ।

আপনি যদি একটি নামে আকার যেমন ব্যবহার করেন, তাহলে 'medium', তারপর কিংবদন্তি টেক্সট বিশ্বব্যাপী সঙ্গে স্কেল হবে font.sizeমধ্যে rcParamsfont.sizeব্যবহার পরিবর্তন করতেplt.rc(font.size='medium')


1
পাইথন নতুনদের (কেবল আমার মতো) অবহিত করতে: পদ্ধতি 1 শুধুমাত্র প্লট তৈরির পরে কাজ করে (প্লটের () লাইনের পরে) এবং পদ্ধতি 2 কেবল প্লট তৈরির আগে কাজ করে। ধন্যবাদ. আমি @ স্কট জিগ্যান্টের সাথে একমত, এই উত্তরটি হওয়া উচিত!
ম্যাটিউস দা সিলভা


19

কিংবদন্তি আকার সামঞ্জস্য করার জন্য একাধিক সেটিংস রয়েছে। আমি যে দুটিটিকে সবচেয়ে দরকারী বলে মনে করি তা হ'ল:

  • লেবেলস্পেসিং: যা ফন্টের আকারের বহুগুণে লেবেল এন্ট্রিগুলির মধ্যে ব্যবধান নির্ধারণ করে। উদাহরণস্বরূপ একটি 10 ​​পয়েন্ট হরফ legend(..., labelspacing=0.2)দিয়ে প্রবেশের মধ্যে ব্যবধান কমিয়ে 2 পয়েন্ট করা হবে। আমার ইনস্টলের ডিফল্ট প্রায় 0.5।
  • প্রোপ: যা হরফ আকারের পুরো নিয়ন্ত্রণের অনুমতি দেয় ইত্যাদি ব্যবহার করে আপনি একটি 8 পয়েন্টের ফন্ট সেট করতে পারেন legend(..., prop={'size':8})। আমার ইনস্টলের ডিফল্ট প্রায় 14 পয়েন্ট।

উপরন্তু, কিংবদন্তি ডকুমেন্টেশন তালিকা সহ অন্যান্য প্যাডিং এবং ব্যবধান পরামিতি একটি সংখ্যা: borderpad, handlelength, handletextpad, borderaxespad, এবং columnspacing। এই সমস্ত লেবেলস্পেসিং এবং ফন্টসাইজের বহুগুণে অঞ্চল হিসাবে একই ফর্ম অনুসরণ করে।

এই মানগুলি matplotlibrc ফাইল ব্যবহার করে সমস্ত পরিসংখ্যানের জন্য ডিফল্ট হিসাবে সেট করা যেতে পারে ।


5

আমার ইনস্টল-এ, ফন্টপ্রপ্রেটিগুলি কেবল পাঠ্যের আকার পরিবর্তন করে তবে এটি এখনও খুব বড় এবং ফাঁকা হয়ে গেছে। আমি এতে একটি প্যারামিটার পেয়েছি pyplot.rcParams: legend.labelspacingযা আমি অনুমান করছি ফন্টের আকারের একটি ভগ্নাংশে সেট করা আছে। আমি এটি দিয়ে পরিবর্তন করেছি

pyplot.rcParams.update({'legend.labelspacing':0.25})

আমি কীভাবে এটি পাইপ্লট.এলজেড ফাংশন - পাসিংয়ে নির্দিষ্ট করব তা নিশ্চিত নই

prop={'labelspacing':0.25}

অথবা

prop={'legend.labelspacing':0.25}

একটি ত্রুটি সঙ্গে ফিরে আসে।


0

প্লট.জেন্ডেন্ড (লোক = 'নিম্ন ডান', দশমিক_প্লেস = 2, ফন্টসাইজ = '11', শিরোনাম = 'ওহে আছে', শিরোনাম_ফন্টাইজ = '20')

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