我正在尝试将matplotlib的默认字体更改为Helvetica Neue。在EPD / Canopy的Mac上,一切都很好。
现在尝试在ubuntu上做同样的事情并且它不起作用。
这就是我所做的:
已安装Helvetica Neue
$ fc-match 'Helvetica Neue':Light
HelveticaNeue-Light.otf: "Helvetica Neue" "細體"
将odt / dfont转换为ttf:
fondu -show HelveticaNeue.dfont
将matplotlibrc更改为
$ cat ~/.config/matplotlib/matplotlibrc
...
font.family: Helvetica Neue
我也尝试过:
font.family: sans-serif
font.sans-serif: Helvetica Neue
我删除了字体缓存
rm ~/.config/matplotlib/fontList.cache
但这些步骤都不适合我。
$ 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.defaultFamily [fontext]))
版本是1.3.0
$ python -c 'import matplotlib; print matplotlib.__version__'
1.3.0
我也尝试将字体移动到~/.config/matplotlib/fonts/ttf
,但它没有用。
修改 建议我尝试为特定文本选择特定字体。
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')
但它没有任何区别。
/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 Neue字体来解决这个问题。 (prop.get_family(),self.defaultFamily [fontext]))
答案 0 :(得分:13)
这不会永久改变你的字体,但值得一试
matplotlib.rc('font', family='sans-serif')
matplotlib.rc('font', serif='Helvetica Neue')
matplotlib.rc('text', usetex='false')
matplotlib.rcParams.update({'font.size': 22})
答案 1 :(得分:8)
Ubuntu 14.04 LTS
上传字体
sudo cp NotoSansKR-Regular.otf /usr/share/fonts/
更新字体缓存
sudo fc-cache -fv
您可以查看字体列表
fc-list
重启ipython等 检查字体列表
[f.name for f in matplotlib.font_manager.fontManager.ttflist]
取一个字体名称
import matplotlib.pyplot as plt
from matplotlib import rcParams
rcParams['font.family'] = 'Noto Sans Korean'
绘制
plt.title(u'한글 제목')
plt.xlabel(u'한글 축 이름')
plt.plot(range(5))
答案 2 :(得分:1)
字体缓存显示在我的不同位置(.cache / matplotlib / fontList.cache)。之前我确实在不同的地方有三个人:/
也许可以尝试在您的主目录中搜索它:
find ~/ -name fontList.cache -exec rm {} \;
答案 3 :(得分:1)
Kim已经介绍了动态解决方案的完美工作,以及另外两种在静态方面做同样事情的方法。
首先,您可以为matplotlib的rc文件添加一行。有关查找文件和详细设置的详细信息,请参阅this page。
font.family : NanumGothic
其次,如果您正在使用ipython,则可以将一些字体设置命令放入交互式shell的配置文件中。找到名为ipython_config.py的文件,该文件通常位于〜/ .ipython / somewhere下。然后在列表中再添加两行,c.InteractiveShellApp.exec_lines。
c.InteractiveShellApp.exec_lines = [
"import matplotlib as mpl",
"mpl.rcParams['font.family'] = 'NanumGothic'"
]
当脚本导入matplotlib时,前者始终可以运行您运行shell脚本的任何环境,因为它会加载字体。