我正在尝试将matplotlib字体更改为helvetica,我想在PDF图中使用它.我尝试以下方法:
import matplotlib
matplotlib.use('PDF')
import matplotlib.pylab as plt
from matplotlib import rc
plt.rcParams['ps.useafm'] = True
rc('font',**{'family':'sans-serif','sans-serif':['Helvetica']})
plt.rcParams['pdf.fonttype'] = 42
Run Code Online (Sandbox Code Playgroud)
这不起作用 - 当我用--verbose-debug运行我的代码时,我收到错误:
backend WXAgg version 2.8.10.1
/Library/Frameworks/Python.framework/Versions/6.2/lib/python2.6/site-packages/matplotlib/__init__.py:833: UserWarning: This call to matplotlib.use() has no effect
because the the backend has already been chosen;
matplotlib.use() must be called *before* pylab, matplotlib.pyplot,
or matplotlib.backends is imported for the first time.
findfont: Could not match :family=sans-serif:style=normal:variant=normal:weight=normal:stretch=normal:size=medium. Returning /Library/Frameworks/Python.framework/Versions/6.2/lib/python2.6/site-packages/matplotlib/mpl-data/fonts/ttf/Vera.ttf
Assigning font /F1 = /Library/Frameworks/Python.framework/Versions/6.2/lib/python2.6/site-packages/matplotlib/mpl-data/fonts/ttf/Vera.ttf
Embedding font /Library/Frameworks/Python.framework/Versions/6.2/lib/python2.6/site-packages/matplotlib/mpl-data/fonts/ttf/Vera.ttf
Writing TrueType font
Run Code Online (Sandbox Code Playgroud)
显然它找不到Helvetica.我不知道为什么.我在mpl-data的afm目录中有Helvetica,当matplotlib启动时,它会读取它并输出:
createFontDict: /Library/Frameworks/Python.framework/Versions/6.2/lib/python2.6/site-packages/matplotlib/mpl-data/fonts/afm/Helvetica.afm
Run Code Online (Sandbox Code Playgroud)
另外我还需要一个特殊的.ttf …
我有一个matplotlib脚本启动...
import matplotlib as mpl
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
mpl.rcParams['xtick.labelsize']=16
...
Run Code Online (Sandbox Code Playgroud)
我用过这个命令
fm.findSystemFonts()
Run Code Online (Sandbox Code Playgroud)
获取我系统上的字体列表.我发现了我想要使用的.ttf文件的完整路径,
'/usr/share/fonts/truetype/anonymous-pro/Anonymous Pro BI.ttf'
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下命令成功使用此字体
mpl.rcParams['font.family'] = 'anonymous-pro'
Run Code Online (Sandbox Code Playgroud)
和
mpl.rcParams['font.family'] = 'Anonymous Pro BI'
Run Code Online (Sandbox Code Playgroud)
这两者都回归了
/usr/lib/pymodules/python2.7/matplotlib/font_manager.py:1218: UserWarning: findfont: Font family ['anonymous-pro'] not found. Falling back to Bitstream Vera Sans
Run Code Online (Sandbox Code Playgroud)
我可以使用mpl.rcParams字典在我的图中设置这个字体吗?
编辑
在阅读了一下之后,似乎这是从.ttf文件中确定字体系列名称的一般问题.在linux或python中这很容易吗?
另外,我试过添加
mpl.use['agg']
mpl.rcParams['text.usetex'] = False
Run Code Online (Sandbox Code Playgroud)
没有任何成功