14

開始するmatplotlibスクリプトがあります...

import matplotlib as mpl
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm

mpl.rcParams['xtick.labelsize']=16 
...

コマンドを使用しました

fm.findSystemFonts()

システム上のフォントのリストを取得します。使用したい .ttf ファイルへのフル パスを発見しました。

'/usr/share/fonts/truetype/anonymous-pro/Anonymous Pro BI.ttf'

次のコマンドを使用して成功せずにこのフォントを使用しようとしました

mpl.rcParams['font.family'] = 'anonymous-pro'  

mpl.rcParams['font.family'] = 'Anonymous Pro BI'

どちらも次のようなものを返します

/usr/lib/pymodules/python2.7/matplotlib/font_manager.py:1218: UserWarning: findfont: Font family ['anonymous-pro'] not found. Falling back to Bitstream Vera Sans

mpl.rcParams 辞書を使用してプロットにこのフォントを設定できますか?

編集

もう少し読んだ後、これは .ttf ファイルからフォントファミリ名を決定する一般的な問題のようです。これはLinuxまたはPythonで簡単に実行できますか?

さらに、追加してみました

mpl.use['agg']
mpl.rcParams['text.usetex'] = False

成功せずに

4

3 に答える 3

16

フォントファミリーの指定:

ttf へのパスしかわかっていない場合は、次のget_name方法でフォント ファミリ名を見つけることができます。

import matplotlib as mpl
import matplotlib.pyplot as plt
import matplotlib.font_manager as font_manager

path = '/usr/share/fonts/truetype/msttcorefonts/Comic_Sans_MS.ttf'
prop = font_manager.FontProperties(fname=path)
mpl.rcParams['font.family'] = prop.get_name()
fig, ax = plt.subplots()
ax.set_title('Text in a cool font', size=40)
plt.show()

パスによるフォントの指定:

import matplotlib.pyplot as plt
import matplotlib.font_manager as font_manager

path = '/usr/share/fonts/truetype/msttcorefonts/Comic_Sans_MS.ttf'
prop = font_manager.FontProperties(fname=path)
fig, ax = plt.subplots()
ax.set_title('Text in a cool font', fontproperties=prop, size=40)
plt.show()
于 2013-05-15T21:03:54.123 に答える
3

fc-query myfile.ttf コマンドを使用して、Linux フォント システム (fontconfig) に従ってフォントのメタデータ情報を確認できます。matplotlib が受け入れる名前を出力する必要があります。ただし、現在、matplotlib fontconfig の統合はかなり部分的なものであるため、他の Linux アプリケーションの同じフォントには存在しないバグや制限に遭遇する可能性が非常に高いと思います。

(この悲しい状態は、matplotlib の既定の構成でハードコードされたすべてのフォント名によって隠されています。それらを変更しようとするとすぐに、危険な土地にいることになります)

于 2013-06-22T11:51:13.443 に答える