13
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Python matplotlib 使えるフォント一覧の作成

Last updated at Posted at 2018-03-09

はじめに

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 で表示が省略されないようにするため,フォントファイル名とパス名の文字数をリスト l1l2 に格納していきます.

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順に並べたので,使いたいフォントパスを探しやすいです.

以 上

13
9
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?