首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >更改Matplotlib的默认字体

更改Matplotlib的默认字体
EN

Stack Overflow用户
提问于 2014-01-30 15:52:54
回答 4查看 53.4K关注 0票数 31

我试图将matplotlib的默认字体更改为Helvetica Neue。一段时间前,在我和环保署/Canopy的Mac上,一切都很好。

现在尝试着在ubuntu上做同样的事情,但这是行不通的。

我就是这样做的:

  1. 已安装的Helvetica Neue $ fc-match 'Helvetica Neue':Light HelveticaNeue-Light.otf:"Helvetica Neue“"細體”
  2. 将odt/d字体转换为专题信托基金: -show HelveticaNeue.dfont
  3. 将matplotlibrc改为 $ cat ~/..config/matplotlib/matplotlibrc.font.family: Helvetica Neue 我也尝试过: font.family: sans-serif font.ans-serif: Helvetica Neue
  4. 我删除了字体缓存 rm ~/..config/matplotlib/fontList.cache

但这些步骤对我都没有用。

代码语言:javascript
运行
复制
    $ python -c 'from  matplotlib import pyplot as plt; plt.plot(1); plt.savefig("/tmp/test.png")'
    /usr/local/lib/python2.7/dist-packages/matplotlib-1.3.0-py2.7-linux-x86_64.egg/matplotlib/font_manager.py:1236: 
    UserWarning: findfont: Font family ['Helvetica Neue'] not found. Falling back to Bitstream Vera Sans

(prop.get_family(),self.defaultFamilyfontext)

版本为1.3.0

代码语言:javascript
运行
复制
    $ python -c 'import matplotlib; print  matplotlib.__version__'
    1.3.0

我还试着把字体移到~/.config/matplotlib/fonts/ttf上,但没有成功。

编辑:,正如我建议的那样,我尝试为特定文本选择特定字体。

代码语言:javascript
运行
复制
import matplotlib as mpl
mpl.use('Agg')
import matplotlib.pyplot as plt
import matplotlib.font_manager as font_manager

path = '/home/<myusername>/.fonts/HelveticaNeue.ttf'

prop = font_manager.FontProperties(fname=path)
prop.set_weight = 'light'
mpl.rcParams['font.family'] = prop.get_name()
mpl.rcParams['font.weight'] = 'light'

fig, ax = plt.subplots()
ax.set_title('Text in a cool font', fontproperties=prop, size=40)
plt.savefig('/tmp/test2.png')

但这没什么区别。

代码语言:javascript
运行
复制
/usr/local/lib/python2.7/dist-packages/matplotlib-1.3.0-py2.7-linux-x86_64.egg/matplotlib/font_manager.py:1236: 
UserWarning: findfont: Font family ['Helvetica Neue'] not found. Falling back to Bitstream Vera Sans

但是,我似乎只有在Helvetica/Helvetica新字体中才会遇到这个问题。(prop.get_family(),self.defaultFamilyfontext)

EN

回答 4

Stack Overflow用户

发布于 2014-02-14 10:45:39

这不会永久改变你的字体,但值得一试。

代码语言:javascript
运行
复制
matplotlib.rc('font', family='sans-serif') 
matplotlib.rc('font', serif='Helvetica Neue') 
matplotlib.rc('text', usetex='false') 
matplotlib.rcParams.update({'font.size': 22})
票数 17
EN

Stack Overflow用户

发布于 2015-02-07 12:38:48

Ubuntu 14.04 LTS

上传字体

代码语言:javascript
运行
复制
sudo cp NotoSansKR-Regular.otf /usr/share/fonts/

更新字体缓存

代码语言:javascript
运行
复制
sudo fc-cache -fv

您可以检查字体列表。

代码语言:javascript
运行
复制
fc-list

重新启动ipython等。检查字体列表。

代码语言:javascript
运行
复制
[f.name for f in matplotlib.font_manager.fontManager.ttflist]

取你的字号

代码语言:javascript
运行
复制
import matplotlib.pyplot as plt
from matplotlib import rcParams
rcParams['font.family'] = 'Noto Sans Korean'

代码语言:javascript
运行
复制
plt.title(u'한글 제목')
plt.xlabel(u'한글 축 이름')
plt.plot(range(5))
票数 10
EN

Stack Overflow用户

发布于 2015-11-03 07:59:06

Kim已经引入了动态解决方案,这是非常完美的,这里还有另外两种在静态中实现相同的方法。

首先,您可以为matplotlib在rc文件中放置一行。有关定位文件和详细设置的详细信息,请参阅此页

代码语言:javascript
运行
复制
font.family : NanumGothic

其次,如果您正在使用ipython,您可以将一些字体设置命令放置到交互式shell的配置文件中。查找名为ipython_config.py的文件,该文件通常位于~/..ipython/下面。然后向列表中再添加两行,c.InteractiveShellApp.exec_lines。

代码语言:javascript
运行
复制
c.InteractiveShellApp.exec_lines = [
    "import matplotlib as mpl",
    "mpl.rcParams['font.family'] = 'NanumGothic'"
]

当脚本导入matplotlib时,当shell脚本加载字体时,它总是工作在任何环境中。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21461155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档