web-dev-qa-db-ja.com

Matplotlibは基本的なフォントを見つけることができません

Miniconda仮想環境のPython 3でmatplotlibバージョン2.0.0を使用しています。私は、root権限を持っていないUnix科学計算クラスターで作業しています。私は通常ipythonノートブックを介してpythonコードを実行しています。次のような基本的なコマンドを実行する場合:

import matplotlib.pyplot as plt
plt.scatter([1,5], [1,5])

エラーメッセージが表示されます。

path_to_miniconda/miniconda3/envs/conda34/lib/python3.4/site-
packages/matplotlib/font_manager.py:1297: UserWarning: findfont: Font family
['sans-serif'] not found. Falling back to DejaVu Sans
(prop.get_family(), self.defaultFamily[fontext]))

Times New Romanフォントを使用できるようにしたいのですが、ここから見つけたフォントキャッシュファイル(fontList.py3k.cache)を削除した後でも:

import matplotlib as mpl
fm = mpl.font_manager
fm.get_cachedir()

コマンド:

mpl.rcParams['font.family'] = ['serif']
mpl.rcParams['font.serif'] = ['Times New Roman']

効果はありません。上記と同じエラーが表示されます。 True Typeフォントディレクトリ:

path_to_miniconda/miniconda3/envs/conda34/lib/python3.4/site-packages/matplotlib/mpl-data/fonts/ttf /

dejaVuSerif、DejaVuSans、STIX、cmb、cmt、cmyのタイプのフォントは40個しかありません

何が起こっているのか、どのように追加のフォントを追加できるのか考えていますか?ありがとう!

37
dylkot

私のためのこの仕事::

$ Sudo apt-get install msttcorefonts -qq
21
user3313834

Ubuntu Xenial 64ビットを実行しているVagrant VMでもまったく同じ問題がありました。すでにインストールしたフォントの数に関係なく、matplotlibには「システム」フォント名「sans-serif」に問題がありました。私はそれを修正しました:

  • Jupyterを停止する
  • フォントマネージャーのインストール:Sudo apt install font-manager
  • Matplotlibキャッシュディレクトリのクリーニング:rm ~/.cache/matplotlib -fr
  • Jupyterを再起動します。

Sans-serifに関するエラーメッセージはもうありません。

18
Craig Kelly

動作させるには、現在の2つのトップアンサーを組み合わせる必要がありました。ここに私のために働いたものがあります:

$ Sudo apt install msttcorefonts -qq
$ rm ~/.cache/matplotlib -rf
10
felleg

警告に直面したときのWindowsユーザー向けのソリューション:

UserWarning: findfont: Font family ['serif'] not found. Falling back to DejaVu Sans
(prop.get_family(), self.defaultFamily[fontext]))
  1. Matplotlibのキャッシュにあるフォントを削除します。
    キャッシュの場所:import matplotlib as mpl; print(mpl.font_manager.get_cachedir())

  2. Matplotlibのフォントディレクトリを見つけます。パスは次のようになります
    C:\Miniconda3\pkgs\matplotlib-2.2.2-py36_1\Lib\site-packages\matplotlib\mpl-data\fonts\ttf

  3. Computer Modern などの必要なフォントをこのディレクトリにコピーします。

警告は持続する場合がありますが、プロットのフォントは適切に変更する必要があります。

6
mab

上記のすべての方法を試してください。私にはうまくいきません。

これを解決する私の方法は、jupyterを実行しているubuntuサーバーでcondaを使用しているため、少し汚い原因です

locate -b '\mpl-data'

フォルダーを見つける

/usr/share/matplotlib/mpl-data

次に、simheiフォントをmpl-dataのフォントフォルダーに追加します。その後、matplotlibフォントキャッシュを削除します

rm -rf ~/.cache/matplotlib

jupyter Notebookを再起動すると動作します。

1
tyan

Gcloud VMで実行されているCloud Datalabドッカーイメージで同様の問題に直面していました。以下を実行すると、問題が修正されました。

$ Sudo apt install msttcorefonts -qq
$ rm ~/.cache/matplotlib -rf

ここ は、念のため、Datalabインスタンスを含むgcloud VMで実行されているdockerイメージにアクセスする方法に関する指示です。

0

Pyplotパラメーターを設定して修正しました:

import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'serif'

したがって、次のようなフォント(Helvetica、Times New Roman)を使用できます。

ax.set_title('your_title_text',fontname="Times New Roman", fontsize=20)
0
tngotran