我正在嘗試將matplotlib的默認字體更改爲Helvetica Neue。在我的Mac上使用EPD/Canopy前一段時間一切正常。更改matplotlib的默認字體
試圖在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]))
在嘗試更改默認設置之前,您是否能夠直接/明確地使用新字體? http://stackoverflow.com/a/18821968/1643946顯示了一種列出python/mpl可用的字體的方法,您可以嘗試使用'plt.text(1,'rattling',font_family =「Helvetica Neue 「)'。另見http://stackoverflow.com/a/16574948/1643946 – Bonlenfum
公平點。我現在嘗試沒有成功。據此編輯問題。 – gozzilli
你可以嘗試從主分支安裝嗎?最近有一些與字體查找有關的工作。它看起來像字體名稱中沒有ascii,iirc上游有一個錯誤使得它不起作用。 – tacaswell