浅谈matplotlib默认字体设置探索
控制默认字体的设置
根据官方文档https://matplotlib.org/tutorials/text/text_props.html#default-font可知:
ThebasedefaultfontiscontrolledbyasetofrcParams
默认字体是由一组rcParams控制的。
rcParam | usage |
---|---|
‘font.family' | Listofeithernamesoffontor{‘cursive',‘fantasy',‘monospace',‘sans',‘sansserif',‘sans-serif',‘serif'} |
‘font.style' | Thedefaultstyle,ex‘normal',‘italic' |
‘font.variant' | Defaultvariant,ex‘normal',‘small-caps'(untested) |
‘font.stretch' | Defaultstretch,ex‘normal',‘condensed'(incomplete) |
‘font.weight' | Defaultweight.Eitherstringorinteger |
‘font.size' | Defaultfontsizeinpoints.Relativefontsizes(‘large',‘x-small')arecomputedagainstthissize |
我们最关心的当然是'font.family','font.family'的取值有三种:
- 单一字体名称。
- 字体名称列表。
- {'cursive','fantasy','monospace','sans','sansserif','sans-serif','serif'}中的某一个值。
对于字体名称,可以通过ttflist获取。
frommatplotlib.font_managerimportfontManager fontManager.ttflist
对于{'cursive','fantasy','monospace','sans','sansserif','sans-serif','serif'},它与实际字体名称之间的映射关系由以下rcParams控制:
familyalias | rcParamwithmappings |
---|---|
‘serif' | ‘font.serif' |
‘monospace' | ‘font.monospace' |
‘fantasy' | ‘font.fantasy' |
‘cursive' | ‘font.cursive' |
{‘sans',‘sansserif',‘sans-serif'} | ‘font.sans-serif' |
'font.sans-serif'等取值其实都代表一个字体列表。
如何设置默认字体
官方文档给出了设置默认字体的方法建议:
Tosetthedefaultfonttobeonethatsupportsthecodepointsyouneed,prependthefontnameto‘font.family'orthedesiredaliaslists
matplotlib.rcParams[‘font.sans-serif']=[‘SourceHanSansTW',‘sans-serif']
orsetitinyour.matplotlibrcfile:
font.sans-serif:SourceHanSansTW,Arial,sans-serif
Tocontrolthefontusedonper-artistbasisusethe‘name',‘fontname'or‘fontproperties'kwargsdocumentedabove.
- 通过常见的方法设置:matplotlib.rcParams['font.sans-serif']=['SourceHanSansTW','sans-serif']
- 设置.matplotlibrc文件
.matplotlibrc文件中的字体设置
配置文件中重要的就是'font.sans-serif'等字体家族列表,列表是有优先级的,越靠前字体的优先级越高,所有很多教程中都要求把需要设置的字体设置为列表的第一个元素。
##*************************************************************************** ##*FONT* ##*************************************************************************** ##Thefontpropertiesusedby`text.Text`. ##Seehttps://matplotlib.org/api/font_manager_api.htmlformoreinformation ##onfontproperties.The6fontpropertiesusedforfontmatchingare ##givenbelowwiththeirdefaultvalues. ## ##Thefont.familypropertyhasfivevalues: ##-'serif'(e.g.,Times), ##-'sans-serif'(e.g.,Helvetica), ##-'cursive'(e.g.,Zapf-Chancery), ##-'fantasy'(e.g.,Western),and ##-'monospace'(e.g.,Courier). ##Eachofthesefontfamilieshasadefaultlistoffontnamesindecreasing ##orderofpriorityassociatedwiththem.Whentext.usetexisFalse, ##font.familymayalsobeoneormoreconcretefontnames. ## ##Thefont.stylepropertyhasthreevalues:normal(orroman),italic ##oroblique.Theobliquestylewillbeusedforitalic,ifitisnot ##present. ## ##Thefont.variantpropertyhastwovalues:normalorsmall-caps.For ##TrueTypefonts,whicharescalablefonts,small-capsisequivalent ##tousingafontsizeof'smaller',orabout83%%ofthecurrentfont ##size. ## ##Thefont.weightpropertyhaseffectively13values:normal,bold, ##bolder,lighter,100,200,300,...,900.Normalisthesameas ##400,andboldis700.bolderandlighterarerelativevalueswith ##respecttothecurrentweight. ## ##Thefont.stretchpropertyhas11values:ultra-condensed, ##extra-condensed,condensed,semi-condensed,normal,semi-expanded, ##expanded,extra-expanded,ultra-expanded,wider,andnarrower.This ##propertyisnotcurrentlyimplemented. ## ##Thefont.sizepropertyisthedefaultfontsizefortext,giveninpts. ##10ptisthestandardvalue. ## ##Notethatfont.sizecontrolsdefaulttextsizes.Toconfigure ##specialtextsizesticklabels,axes,labels,title,etc,seetherc ##settingsforaxesandticks.Specialtextsizescanbedefined ##relativetofont.size,usingthefollowingvalues:xx-small,x-small, ##small,medium,large,x-large,xx-large,larger,orsmaller #font.family:sans-serif #font.style:normal #font.variant:normal #font.weight:normal #font.stretch:normal #font.size:10.0 #font.serif:DejaVuSerif,BitstreamVeraSerif,ComputerModernRoman,NewCenturySchoolbook,CenturySchoolbookL,Utopia,ITCBookman,Bookman,NimbusRomanNo9L,TimesNewRoman,Times,Palatino,Charter,serif #font.sans-serif:DejaVuSans,BitstreamVeraSans,ComputerModernSansSerif,LucidaGrande,Verdana,Geneva,Lucid,Arial,Helvetica,AvantGarde,sans-serif #font.cursive:AppleChancery,Textile,ZapfChancery,Sand,ScriptMT,Felipa,cursive #font.fantasy:ComicNeue,ComicSansMS,Chicago,Charcoal,ImpactWestern,HumorSans,xkcd,fantasy #font.monospace:DejaVuSansMono,BitstreamVeraSansMono,ComputerModernTypewriter,AndaleMono,NimbusMonoL,CourierNew,Courier,Fixed,Terminal,monospace
通过rc函数设置默认字体属性的方法
根据文档可知
传统的字体设置方法plt.rcParams['font.sans-serif']=['simhei']等价于
font={'sans-serif':['simhei']} plt.rc('font',**font)
matplotlib.pyplot.rc(group,**kwargs) SetthecurrentrcParams.groupisthegroupingfortherc,e.g.,forlines.linewidththegroupislines,foraxes.facecolor,thegroupisaxes,andsoon.Groupmayalsobealistortupleofgroupnames,e.g.,(xtick,ytick).kwargsisadictionaryattributename/valuepairs,e.g.,: rc('lines',linewidth=2,color='r') setsthecurrentrcParamsandisequivalentto: rcParams['lines.linewidth']=2 rcParams['lines.color']='r'
到此这篇关于浅谈matplotlib默认字体设置探索的文章就介绍到这了,更多相关matplotlib默认字体内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!