LinuxでMatplotlibハングルフォントを設定する


ブログ参照
  • 新しい環境でmatplotlibを使うとハングルフォントがなく、毎回設定するので面倒です.
  • 複数のブログを探さないようにまとめた
  • 0)コピーされた完全なコード

  • bash

  • apt-get install fonts-nanum*
    fc-cache -fv
    python -c "import matplotlib; print(matplotlib.__file__)"
    cp /usr/share/fonts/truetype/nanum/Nanum* /opt/conda/envs/project/lib/python3.8/site-packages/matplotlib/mpl-data/fonts/ttf/
    rm -rf ~/.cache/matplotlib/*
  • python

  • import matplotlib.font_manager
    font_list = matplotlib.font_manager.findSystemFonts(fontpaths=None, fontext='ttf')
    [matplotlib.font_manager.FontProperties(fname=font).get_name() for font in font_list if 'Nanum' in font]
    \
    import matplotlib.pyplot as plt
    plt.rc('font', family='NanumGothicCoding')
    \
    import matplotlib as mpl
    mpl.rcParams['axes.unicode_minus'] = False

    1)区切りフォントのインストール

    [sudo] apt-get install fonts-nanum*

    2)フォントキャッシュの削除

    fc-cache -fv

    3)matplotlibパスのチェック

    python -c "import matplotlib; print(matplotlib.__file__)"
  • 上記のコードを入力するとmatplotlibの経路がわかります.
  • 4)フォントのコピー

    cp /usr/share/fonts/truetype/nanum/Nanum* /opt/conda/envs/project/lib/python3.8/site-packages/matplotlib/mpl-data/fonts/ttf/
  • /usr/share/fonts/truetype/nanum/パスに設定されているNanumフォントを(3)で確認したmatplotlibこのパスのttfフォルダに移す.
  • ここで移動したフォルダは、自分の都合でパスを指定できます.
  • 5)Matplotlibフォントキャッシュの削除

    rm -rf ~/.cache/matplotlib/*
  • 以上のコードで削除するmatplotlibのフォントキャッシュ.
  • 6)フォントリストのチェック

    import matplotlib.font_manager
    font_list = matplotlib.font_manager.findSystemFonts(fontpaths=None, fontext='ttf')
    [matplotlib.font_manager.FontProperties(fname=font).get_name() for font in font_list if 'Nanum' in font]
  • 以上のコードがpythonで実行され、適用されるNanumフォントの名前が特定されます.
  • 7)グローバルフォントの適用

    import matplotlib.pyplot as plt
    plt.rc('font', family='NanumGothicCoding')
    使用
  • plt.rcフォントをグローバルに変更できます.
  • familyの因子で、(6)で確認したフォント名を入れて、ハングルフォントを使うことができます.
  • etc)負の値が破られた場合

    import matplotlib as mpl
    mpl.rcParams['axes.unicode_minus'] = False
  • 上記のコードを適用することで、マイナスのフォントが破られることを防止できます.