कैसे matplotlib.pyplot के साथ किंवदंती का आकार बदलने के लिए


324

यहाँ सरल प्रश्न: मैं अपने लीजेंड का आकार 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)

जवाबों:


543

आप 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?
haccks

64

यह करना चाहिए

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

फिर बाद में साजिश करें।

अन्य rcParams के एक टन हैं, उन्हें matplotlibrc फ़ाइल में भी सेट किया जा सकता है।

संभवतः भी आप इसे एक matplotlib.font_manager.FontPropertiesउदाहरण के रूप में बदल सकते हैं, लेकिन यह मुझे नहीं पता कि कैसे करना है। -> यान का उत्तर देखें।


2
याmatplotlib.rc('legend', fontsize=0.5, linewidth=2)
एरिक

2
legend.handlelengthइसके बजाय होना चाहिएlegend.linewidth
Emmet B

FontManager का सदस्य get_default_size () डिफ़ॉल्ट आकार देता है। मेरे लिए यह १२
गुहूर

1
"PyLab" के उपयोग को और अधिक प्रोत्साहित नहीं किया जाता है: matplotlib.org/faq/…
Hagbard

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

इस पद्धति के साथ आप प्रत्येक लीजेंड को निर्माण के लिए फोंटाइज़ सेट कर सकते हैं (आपको अलग-अलग फोंट के साथ कई किंवदंतियों की अनुमति है)। हालाँकि, आपको हर बार एक लीजेंड बनाते समय हर चीज़ को मैन्युअल रूप से लिखना होगा।

(नोट: @ Mathias711 ने अपने उत्तर में उपलब्ध फोंटसाइज़ को सूचीबद्ध किया है)

विधि 2: rcParams में सुविधाजनक निर्दिष्ट करें (सुविधाजनक)

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

इस पद्धति के साथ आप डिफ़ॉल्ट किंवदंती को सेट करते हैं, और सभी किंवदंतियां स्वचालित रूप से तब तक उपयोग करेंगी जब तक कि आप अन्यथा विधि का उपयोग करके निर्दिष्ट नहीं करते हैं। इसका मतलब है कि आप अपने कोड की शुरुआत में अपने किंवदंती को सेट कर सकते हैं, और प्रत्येक व्यक्तिगत कथा के लिए इसे सेट करने के बारे में चिंता न करें। ।

यदि आप एक नामित आकार जैसे का उपयोग करते हैं 'medium', तो कथा पाठ वैश्विक साथ स्केल करेगा font.sizeमें rcParamsfont.sizeउपयोग बदलने के लिएplt.rc(font.size='medium')


1
बस पायथन शुरुआती (जैसे मेरे) को सूचित करने के लिए: विधि 1 केवल एक भूखंड बनाने के बाद काम करती है (एक भूखंड () लाइन के बाद) और विधि 2 केवल एक भूखंड बनाने से पहले काम करती है। धन्यवाद। मैं @Scott Gigante से सहमत हूँ, इसका उत्तर होना चाहिए!
मेटुस दा सिल्वा तीक्षेरा

42

अंकों में आकार के अलावा कुछ नामित फॉण्टाइज़ भी हैं :

xx-small
x-small
small
medium
large
x-large
xx-large

उपयोग:

pyplot.legend(loc=2, fontsize = 'x-small')

19

किंवदंती के आकार को समायोजित करने के लिए कई सेटिंग्स हैं। मुझे जो दो सबसे अधिक उपयोगी लगे, वे हैं:

  • लेबलस्पेसिंग: जो फ़ॉन्ट आकार के गुणकों में लेबल प्रविष्टियों के बीच रिक्ति निर्धारित करता है। उदाहरण के लिए, 10 बिंदु फ़ॉन्ट के साथ, legend(..., labelspacing=0.2)प्रविष्टियों के बीच अंतर को 2 बिंदुओं तक कम कर देगा। मेरी स्थापना पर डिफ़ॉल्ट लगभग 0.5 है।
  • प्रोप: जो फ़ॉन्ट आकार, आदि के पूर्ण नियंत्रण की अनुमति देता है, आप का उपयोग कर एक 8 बिंदु फ़ॉन्ट सेट कर सकते हैं legend(..., prop={'size':8})। मेरी स्थापना पर डिफ़ॉल्ट लगभग 14 अंक है।

इसके अलावा, कथा प्रलेखन सूचियों सहित अन्य गद्दी और रिक्ति अनेक पैरामीटर: borderpad, handlelength, handletextpad, borderaxespad, और columnspacing। ये सभी एक ही फॉर्म का पालन करते हैं जैसे कि लेबलस्पेसिंग और क्षेत्र भी फोंट के गुणकों में।

इन मानों को matplotlibrc फ़ाइल का उपयोग करके सभी आंकड़ों के लिए डिफ़ॉल्ट के रूप में भी सेट किया जा सकता है ।


5

मेरी स्थापना पर, FontProperties केवल पाठ का आकार बदलता है, लेकिन यह अभी भी बहुत बड़ा है और बाहर फैला हुआ है। मैं में एक पैरामीटर पाया pyplot.rcParams: legend.labelspacingहै, जो मेरा अनुमान है कि फ़ॉन्ट आकार का एक अंश के लिए निर्धारित है। मैंने इसे बदल दिया है

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

मुझे यकीन नहीं है कि इसे pyplot.legend फ़ंक्शन पर कैसे निर्दिष्ट किया जाए - गुजर रहा है

prop={'labelspacing':0.25}

या

prop={'legend.labelspacing':0.25}

एक त्रुटि के साथ वापस आता है।


0

प्लॉट.लेजेंड (लोक = 'लोअर राइट', दशमलव_प्लेसेस = 2, फॉण्टाइज़ = '11', शीर्षक = 'हे वहाँ', शीर्षक_फॉनेटाइज़ = '20')

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.