web-dev-qa-db-ja.com

matplotlibのデフォルトのフォントを変更する

MatplotlibのデフォルトのフォントをHelvetica Neueに変更しようとしています。私のMacでEPD/Canopyを使用していると、しばらく前にすべてがうまくいきました。

今すぐubuntuで同じことをしようとしてもうまくいきません。

これは私がやったことです:

  1. Helvetica Neueをインストール

    $ fc-match 'Helvetica Neue':Light
    HelveticaNeue-Light.otf: "Helvetica Neue" "細體"
    
  2. Odt/dfontをttfに変換しました:

    fondu -show HelveticaNeue.dfont
    
  3. matplotlibrcを変更しました

    $ cat ~/.config/matplotlib/matplotlibrc
    ...
    font.family: Helvetica Neue
    

    私も試しました:

    font.family: sans-serif
    font.sans-serif: Helvetica Neue
    
  4. フォントキャッシュを削除しました

    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]))

26
gozzilli

これによりフォントが永久に変更されることはありませんが、試してみる価値はあります

matplotlib.rc('font', family='sans-serif') 
matplotlib.rc('font', serif='Helvetica Neue') 
matplotlib.rc('text', usetex='false') 
matplotlib.rcParams.update({'font.size': 22})
13
Brian

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))
9
KyungHoon Kim

キムはすでに動的ソリューションを導入しており、完全に機能します。また、静的で同じことを行う2つの方法があります。

まず、matplotlibのrcファイルに行を追加します。ファイルの検索と詳細設定の詳細については、 このページ を参照してください。

font.family : NanumGothic

2番目に、ipythonを使用している場合、フォント設定用のコマンドをインタラクティブシェルの構成ファイルに配置できます。通常、〜/ .ipython/somewhereの下にあるipython_config.pyという名前のファイルを見つけます。次に、リストにc.InteractiveShellApp.exec_linesという2行を追加します。

c.InteractiveShellApp.exec_lines = [
    "import matplotlib as mpl",
    "mpl.rcParams['font.family'] = 'NanumGothic'"
]

以前は、スクリプトがmatplotlibをインポートするときにフォントをロードするため、シェルスクリプトを実行する環境は常に動作します。

1
Lyle

フォントキャッシュは、別の場所(.cache/matplotlib/fontList.cache)に表示されます。そして、私が実際にそれらの3つを異なる場所に何とかしていた前に:/

ホームディレクトリで検索してみてください。

find ~/ -name fontList.cache -exec rm {} \;
1
jmp