はじめに
matplotlib でフォントを指定したい場合,フォント名とそのパスが必要となります.
例えばこれ:https://qiita.com/damyarou/items/98ba9a3c4dbfd5c71ab0
その時,フォントの一覧表を参照したいわけですが,私は ImageMagick をインストールしているので,ターミナルで
convert -list font
を実行し,パスをコピーして使っています.この方法のいいところは,既にフォント名がABC順でソートされており,使いたいものを探しやすいところです.
でもせっかく Jupyter notebook を使っているので,Jupyter notebook 上の Python
で,使えるフォント一覧を出してみることにしました.
参考サイト
やっていることの説明
matplotlibのフォントマネージャーと,データをソートするためpandasをインポート.
import matplotlib.font_manager as fm
import pandas as pd
フォントパスの取得とリストへの格納.これだとフォントファイル名がパス付きで出てくるため,使いたいフォントを探すのに不便です.
fonts = fm.findSystemFonts()
フォントファイル名とフォントファイルパスを分離する作業.
フォントファイル名のみは,リスト fna
に格納しています.
また,pandas で表示が省略されないようにするため,フォントファイル名とパス名の文字数をリスト l1
と l2
に格納していきます.
for文を回し終わったところで数字の確認出力.
fna=[]
l1=[]
l2=[]
for font in fonts:
text=font.strip()
text=font.split('/')
fna=fna+[text[-1]]
l1=l1+[len(text[-1])]
l2=l2+[len(font)]
print('length of list-fna =',len(fna))
print('length of list-fonts =',len(fonts))
print('character length of fna =',max(l1))
print('character length of fonts=',max(l2))
cl=max(l1)+max(l2)
pandasのデータフレームにリストをセット.
df=pd.DataFrame({
'fname': fna,
'path' : fonts
})
pandasでの表示が省略されないよう,行数と列の文字数を変更します.
行数は,フォントファイル名のリストの長さ,列の文字数はフォントファイル名とパス名の文字数の最大値の和としています.
pd.set_option('display.max_rows',len(fna))
pd.set_option('display.max_colwidth',cl)
フォントを探しやすいように昇順(ABC順)でソートして表示.
df=df.sort_values(by='fname')
df
プログラム全文
import matplotlib.font_manager as fm
import pandas as pd
fonts = fm.findSystemFonts()
fna=[]
l1=[]
l2=[]
for font in fonts:
text=font.strip()
text=font.split('/')
fna=fna+[text[-1]]
l1=l1+[len(text[-1])]
l2=l2+[len(font)]
print('length of list-fna =',len(fna))
print('length of list-fonts =',len(fonts))
print('character length of fna =',max(l1))
print('character length of fonts=',max(l2))
cl=max(l1)+max(l2)
df=pd.DataFrame({
'fname': fna,
'path' : fonts
})
pd.set_option('display.max_rows',len(fna))
pd.set_option('display.max_colwidth',cl)
df=df.sort_values(by='fname')
df
上記を実行すると,pandasの表が表示されます.
フォントファイル名をABC順に並べたので,使いたいフォントパスを探しやすいです.
以 上