2012-07-06 15 views
28

का उपयोग कर लगातार फ़ॉन्ट मेरी समस्या यह है कि मैं कुछ भूखंडों में लेटेक्स खिताब का उपयोग करना चाहता हूं, और दूसरों में कोई लेटेक्स नहीं। अभी, मैटलप्लिब के लेटेक्स खिताब और गैर-लेटेक्स खिताब के लिए दो अलग-अलग डिफ़ॉल्ट फोंट हैं और मैं दोनों को सुसंगत बनाना चाहता हूं। क्या एक आरसी सेटिंग है जिसे मुझे बदलना है जो इसे स्वचालित रूप से अनुमति देगा?Matplotlib, लेटेक्स

import numpy as np 
from matplotlib import pyplot as plt 

tmpData = np.random.random(300) 

##Create a plot with a tex title 
ax = plt.subplot(211) 
plt.plot(np.arange(300), tmpData) 
plt.title(r'$W_y(\tau, j=3)$') 
plt.setp(ax.get_xticklabels(), visible = False) 

##Create another plot without a tex title 
plt.subplot(212) 
plt.plot(np.arange(300), tmpData) 
plt.title(r'Some random numbers') 
plt.show() 

यहाँ विसंगति के बारे में मैं बात कर रहा हूँ है:

मैं निम्नलिखित कोड के साथ एक साजिश उत्पन्न करते हैं। अक्ष टिक लेबल खिताब .: के सापेक्ष देख पतले होते हैं

+0

मुझे विश्वास है [यह उत्तर] (http://stackoverflow.com/questions/11611374/sans-serif-font-for-axes-tick-labels-with-latex) आपको –

उत्तर

26

बनाने के लिए बोल्ड फ़ॉन्ट डिफ़ॉल्ट होगा टेक्स्ट-स्टाइल/मैथटेक्स्ट टेक्स्ट नियमित पाठ की तरह दिखता है, आपको मैथटेक्स्ट फ़ॉन्ट को बिटस्ट्रीम वेरा सैन्स में सेट करने की आवश्यकता है,

import matplotlib 
matplotlib.rcParams['mathtext.fontset'] = 'custom' 
matplotlib.rcParams['mathtext.rm'] = 'Bitstream Vera Sans' 
matplotlib.rcParams['mathtext.it'] = 'Bitstream Vera Sans:italic' 
matplotlib.rcParams['mathtext.bf'] = 'Bitstream Vera Sans:bold' 
matplotlib.pyplot.title(r'ABC123 vs $\mathrm{ABC123}^{123}$') 

यदि आप नियमित पाठ को मैथटेक्स्ट टेक्स्ट की तरह दिखाना चाहते हैं, तो आप सब कुछ स्टिक्स में बदल सकते हैं। इस लेबल को प्रभावित करेगा, शीर्षक, टिक्स, आदि

import matplotlib 
matplotlib.rcParams['mathtext.fontset'] = 'stix' 
matplotlib.rcParams['font.family'] = 'STIXGeneral' 
matplotlib.pyplot.title(r'ABC123 vs $\mathrm{ABC123}^{123}$') 

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

sorted([f.name for f in matplotlib.font_manager.fontManager.ttflist]) 

जैसा कि बताया जा, आप भी लेटेक्स rcParams में text.usetex की स्थापना करके एक फ़ॉन्ट के साथ आप के लिए सब कुछ प्रस्तुत करना हो सकता है, लेकिन यह है कि धीमी गति से और पूरी तरह से आवश्यक नहीं है।

11

संपादित

आप, matplotlib अंदर LaTeX द्वारा इस्तेमाल किया फ़ॉन्ट बदल यह पेज

http://matplotlib.sourceforge.net/users/usetex.html

की जाँच करना चाहते हैं

उदाहरणों में से एक है

from matplotlib import rc 
rc('font',**{'family':'sans-serif','sans-serif':['Helvetica']}) 
## for Palatino and other serif fonts use: 
#rc('font',**{'family':'serif','serif':['Palatino']}) 
rc('text', usetex=True) 

बस अपना पसंदीदा चुनें!

और यदि आप एक बोल्ड फ़ॉन्ट चाहते हैं, आप की कोशिश कर सकते \mathbf

plt.title(r'$\mathbf{W_y(\tau, j=3)}$') 

संपादित 2

निम्नलिखित आप

font = {'family' : 'monospace', 
     'weight' : 'bold', 
     'size' : 22} 

rc('font', **font) 
+0

की मदद करेगा मुझे लगता है कि मुझे अपना स्पष्टीकरण देना चाहिए सवाल। अभी, मुझे लगता है कि लेटेक्स फ़ॉन्ट उलझन वाला है और मैं इसे गैर-लेटेक्स फ़ॉन्ट के साथ लाना चाहता हूं। मुझे कुछ मोटा होना चाहिए, इसलिए भूखंडों को संकुचित कर दिया गया है और थिसिस/प्रकाशन में रखा गया है, तो मेरा प्लॉट टेक्स्ट अभी भी पठनीय है। – ncRubert

+0

@ एनसीआरबर्ट गेटचा, फिर मेरा अद्यतन जवाब देखें। – nye17

+0

एक और स्पष्टीकरण। मैं चाहता हूं कि धुरी लेबल मोटे हो जाएं। वे ग्राफ का सबसे अपठनीय हिस्सा हैं। मैंने इसे प्रतिबिंबित करने के लिए प्रश्न अपडेट किया। – ncRubert