2017-02-02 3 views
2

できません。matplotlibでプロットしているときに必要なOTFフォントを使用する必要がありますが、アクセス方法はわかりません。私はHow to use a (random) *.otf or *.ttf font in matplotlib?を見ましたが、どちらの推奨ソリューションも私のためには機能しません。plt.show()はフォントを見つけることができますが、plt.savefig()は

オプション1は、OTFフォントがTTF構造を期待していないため、ただちにエラーを吐きます。prop = matplotlib.font_manager.FontProperties(fname = '/Users/<username>/Library/Fonts/Univers-Condensed.otf')はエラーを吐き出します。

plot_font = {'family' : 'Univers-Condensed', 
      'size' : '11'} 

matplotlib.rc('font', **plot_font) 

plt.plot(range(10)) 
plt.title('Show me Universe', size = 32) 

plt.show() 

なGroovy:私はフォントの一般的な名前に姓を設定し

オプション2は、OTFフォントを見つけました!しかし、私はplt.savefig('test.pdf')plt.show()を変更したときに、私はこのエラーを取得:

UserWarning: findfont: Font family ['Univers-Condensed'] not found. 
Falling back to Bitstream Vera Sans 
    (prop.get_family(), self.defaultFamily[fontext])) 

なぜplt.savefig()plt.show()が見つけることができると同じフォントを見つけることができないのですか?あなたはそれにアプローチする別の方法のためのお勧めがありますか?私はTTFにフォントを変換しないことを望むだろう。

+0

'plt.savefig()'の前に 'matplotlib import rcParams'と' rcParams ['font.family'] = 'Univers-Condensed''から 'import matplotlib.font_manager'を書いて違いがあるのですか? – Chuck

+1

https://github.com/matplotlib/matplotlib/issues/3590 "新しいフォントをシステムに追加するときは、fontList.cacheファイルを削除してmatplotlibが見つけられるようにする必要があります。 "matplotlibのフォントキャッシュは Win7:%userprofile%\。matplotlib \ Ubuntu:〜/ .cache/matplotlib" – Chuck

+0

OSXで作業しているので、パスは少し異なります。私は '〜/ .matplotlib/fontList.py3k.cache'をクリアしましたが、'〜/ .matplotlip/tex.cache'はクリアしませんでした。異なる動作は、 '〜/ .mplplotlip/tex.cache'の存在が続いているようです。 – Caroline

答えて

1

今朝のthisの説明で、matplotlibがユーザープロファイルにインストールされているフォントファミリを見つけるのに役立ちます。 ~/.matplotlib/fontList.py3k.cache~/.matplotlip/tex.cacheの両方をクリアする必要があることに注意することが重要です。私は初めての試みの間に~/.matplotlib/fontList.py3k.cacheをクリアしただけでした。

キャッシュが1つしかクリアされていないときに、plt.show()plt.savefig()の動作が異なっていましたが、今では必要なフォントで数字を保存できるようになりました。

関連する問題