2014-01-23 608 views
28

这听起来像一个简单的问题,但我没有找到任何有效的解决方案来改变用python中的matplotlib制作的图中的字体(而不是字体大小)。如何更改matplotlib(python)中的字体?

我发现一对夫妇教程通过在matplotlib存储其默认字体文件夹修改某些文件来改变matplotlib的默认字体 - 见this blog post - 但我期待一个不太激进的解决方案,因为我想用更多比我的情节(文字,标签,轴标签等)中的一种字体。

+0

高兴它帮助:)你能后导致此错误的代码?我自己没有看到这个错误,但这里有一些链接可以帮助你。 http://matplotlib.1069221.n5.nabble.com/how-to-use-different-font-for-serif-td10084.html http://matplotlib.1069221.n5.nabble.com/Fonts-not-found -td12936.html – aidnani8

+0

产生问题的代码是: 'hfont = {'fontname':'Helvetica'} plt.annotate('Country',(0.17,0.95),xytext = None,xycoords ='figure fraction ',size = 28,color ='red',horizo​​ntalalignment ='left',** hfont)' ,错误是'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site- packages/m atplotlib/font_manager.py:1236:UserWarning:findfont:未找到字体家族['Helvetica']。回落到比特流Vera Sans(prop.get_family(),self.defaultFamily [fontext]))' 而不是如果我使用字体名称Comic Sans MS在你的例子中,代码的作品。 – SirC

回答

43

假设您希望漫画Sans为标题,Helvetica为x标签。

csfont = {'fontname':'Comic Sans MS'} 
hfont = {'fontname':'Helvetica'} 

plt.title('title',**csfont) 
plt.xlabel('xlabel', **hfont) 
plt.show() 
+0

我尝试过,它的工作原理!这正是我所期待的。但是,对于某些字体,我有以下错误消息(不是所有):'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/font_manager.py:1236:UserWarning :findfont:未找到字体家族['Helvetica']。回落到Bitstream Vera Sans (prop.get_family(),self.defaultFamily [fontext]))'。我如何在matplotlib已知的字体集中安装Helvetica? – SirC

+2

找到fontList.cache文件,只能使用那里列出的那些文件。或者看看这里http://stackoverflow.com/questions/20206906/matplotlib-fonts-in-enthought-canopy –

+1

跟进上述评论。要找到你的fontList.cache文件,使用 matplotlib.get_cachedir() –

1
import pylab as plb 
plb.rcParams['font.size'] = 12 

import matplotlib.pyplot as mpl 
mpl.rcParams['font.size'] = 12 
+0

令人难以置信的是,这正是我正在寻找的命令。绝对不是OP要求的 – blue

19

您还可以使用rcParams在全球范围内改变字体的家庭。

import matplotlib.pyplot as plt 
plt.rcParams["font.family"] = "cursive" 
# This will change to your computer's default cursive font 

的matplotlib的字体系列参数列表是here

2

我更喜欢使用:

from matplotlib import rc 
#rc('font',**{'family':'sans-serif','sans-serif':['Helvetica']}) 
rc('font',**{'family':'serif','serif':['Times']}) 
rc('text', usetex=True) 
相关问题