2012-09-16 12 views
259

मैं इस तरह matplotlib में एक आंकड़ा बनाने हूँ:मैं Matplotlib में आकृति शीर्षक और axes लेबल फ़ॉन्ट आकार कैसे सेट करूं?

from matplotlib import pyplot as plt 

fig = plt.figure() 
plt.plot(data) 
fig.suptitle('test title') 
plt.xlabel('xlabel') 
plt.ylabel('ylabel') 
fig.savefig('test.jpg') 

मैं आंकड़ा शीर्षक और अक्ष लेबल के लिए फ़ॉन्ट आकार निर्दिष्ट करना चाहते हैं। मुझे तीनों को अलग-अलग फ़ॉन्ट आकारों की आवश्यकता है, इसलिए वैश्विक फ़ॉन्ट आकार (mpl.rcParams['font.size']=x) सेट करना मैं नहीं चाहता हूं। मैं आकृति शीर्षक और धुरी लेबल के लिए अलग-अलग फ़ॉन्ट आकार कैसे सेट करूं?

+0

मैं उत्सुक था इसलिए मैंने आपके 'mpl.rcParams [' font.size '] = 20' को जोड़ने का प्रयास किया और मूल्यों को 10 और 14 में बदलने का प्रयास किया। सबसे पहले मैंने पाया कि जब तक मैंने 'mpl' को' plt में नहीं बदला, तब तक मुझे त्रुटियां मिलीं '। उस परिवर्तन ने त्रुटि को मंजूरी दे दी लेकिन फिर कोड की रेखा मेरे शीर्षक या लेबल पर कोई प्रभाव नहीं पड़ा। निश्चित रूप से यह वाक्यविन्यास सही है? – TMWP

+0

अब मैं स्वीकार किए गए उत्तर पर टिप्पणियों से सोच रहा हूं कि समस्या मेरा आयात विवरण हो सकता है, हालांकि अगर मैं आदेश आयात नहीं करता तो यह एक त्रुटि नहीं फेंकता है। क्या कोई अन्य आयात लाइन है जिसका उपयोग आपने 'mpl' कमांड का परीक्षण करते समय किया था? – TMWP

उत्तर

400

label, title, आदि जैसे पाठ से निपटने वाले कार्य matplotlib.text.Text के समान पैरामीटर स्वीकार करते हैं। फ़ॉन्ट आकार के लिए आप size/fontsize उपयोग कर सकते हैं:

from matplotlib import pyplot as plt  

fig = plt.figure() 
plt.plot(data) 
fig.suptitle('test title', fontsize=20) 
plt.xlabel('xlabel', fontsize=18) 
plt.ylabel('ylabel', fontsize=16) 
fig.savefig('test.jpg') 

विश्व स्तर पर title और label आकार की स्थापना के लिए, mpl.rcParamsaxes.titlesize और axes.labelsize शामिल हैं। (पेज से):

axes.titlesize  : large # fontsize of the axes title 
axes.labelsize  : medium # fontsize of the x any y labels 

(जहाँ तक मैं देख सकता हूँ, वहाँ x और y लेबल आकार अलग से स्थापित करने के लिए कोई रास्ता नहीं है।)

और मुझे लगता है कि axes.titlesizesuptitle प्रभावित नहीं करता। मुझे लगता है, आपको इसे मैन्युअल रूप से सेट करने की आवश्यकता है।

+0

धन्यवाद! क्या वैश्विक स्तर पर सेट करने का कोई तरीका है लेकिन स्पष्ट रूप से (सुपरटाइल, xlabel, ylabel) के लिए? मैं बहुत सारे चार्ट बना रहा हूं और बस इसे एक बार निर्दिष्ट करना चाहता हूं ... – vasek1

+0

@ vasek1: मैंने सोचा था कि आप वैश्विक सेटिंग नहीं चाहते थे :)। इसके लिए आपको 'mpl.rcParams' की आवश्यकता है। मैंने अपना जवाब संपादित कर लिया है। – Avaris

+8

अपने जैसे किसी और को शीर्षक शीर्षक बदलने के लिए समाधान की तलाश में: 'plt.rcParams.update ({'axes.titlesize': 'small'})' –

30

तुम भी एक rcParams शब्दकोश के माध्यम से विश्व स्तर पर यह कर सकते हैं:

import matplotlib.pylab as pylab 
params = {'legend.fontsize': 'x-large', 
      'figure.figsize': (15, 5), 
     'axes.labelsize': 'x-large', 
     'axes.titlesize':'x-large', 
     'xtick.labelsize':'x-large', 
     'ytick.labelsize':'x-large'} 
pylab.rcParams.update(params) 
+0

'x-big''' के अलावा अन्य आकार क्या हैं? –

+2

'xx-small', 'x-small', 'small', 'medium', 'big', 'x-big', 'xx-big'। Https://matplotlib.org/api/font_manager_api.html#matplotlib.font_manager.FontProperties.set_size देखें – tsando

9

आप अधिक ax वस्तुओं का उपयोग कर अपने अंकन करने के लिए करने के लिए इस्तेमाल कर रहे हैं, तो आप ax.xaxis.label.set_size() याद रखना अधिक आसान कम से कम आसान लग सकता है, या ipython टर्मिनल में टैब का उपयोग करने के लिए। ऐसा लगता है कि प्रभाव देखने के बाद इसे एक रेड्रो ऑपरेशन की आवश्यकता है। उदाहरण के लिए:

import matplotlib.pyplot as plt 

fig, ax = plt.subplots() 
x = [0,1,2] 
y = [0, 3, 9] 
ax.plot(x,y) 
fig.suptitle('test title') 
ax.set_xlabel('xlabel') 
ax.set_ylabel('ylabel') 
ax.xaxis.label.set_size(20) 
plt.draw() 

मुझे सुपरटाइटल आकार सेट करने के लिए एक समान तरीके से नहीं पता है।

संबंधित मुद्दे