前提条件:MacでAnaconda環境のmatplotlibを使う
フォントファイルとmatplotlibのスタイルファイルをダウンロードする
https://github.com/yangcht/Hershey_font_TTF?tab=readme-ov-file から入手可能
matplotlibのフォントフォルダに、ダウンロードしたttfフォルダの中身をすべてコピー
matplotlibのフォントフォルダは /opt/anaconda3/envs/YOUR_ENV_NAME/lib/python3.12/site-packages/matplotlib/mpl-data/fonts/ttf
YOUR_ENV_NAMEは環境の名前、python3.12はpythonのバージョンによって数字が異なる
ダウンロードしたClassicScience.mplstyleを使うには、カレントディレクトリに置いたとすると
import matplotlib.pylab as plt
plt.style.use('ClassicScience.mplstyle')
とする。
ダウンロードしたままのClassicScience.mplstyleを使うと、supermongoデフォルト風のフォント(Hershey Complex)を使える。
IDLデフォルト風(Hershey Simplex)にしたい場合は、ClassicScience.mplstyleを以下の通り編集。
"AVHershey Complex"を"AVHershey Simplex"に置換
"mathtext.fallback : None"を"mathtext.fallback : stixsans"に変更
mathtextのフォントに使いたい記号が無ければ、stixsansの記号を使うという設定。
このままだとなぜか数式と軸でマイナス記号を使えないので、pythonのコードに以下を追加してハイフンで代替えする。
# 数式中の "-" を "\text{-}" に置き換え
def mm(math_expr):
return math_expr.replace("-", r"\text{-}")
label=mm(r"$-\sin(x)$")のように使う
import matplotlib.ticker as ticker
# 軸目盛りのフォーマッタを定義
def custom_minus_formatter(x, pos):
if x < 0:
return f"-{abs(x)}" # ハイフン記号(U+002D)を使用
return str(x)
図ごとに以下を実行
plt.gca().xaxis.set_major_formatter(ticker.FuncFormatter(custom_minus_formatter))
plt.gca().yaxis.set_major_formatter(ticker.FuncFormatter(custom_minus_formatter))
以上で完了。下のような図が作れる。ギリシャ文字もstixsansではなく、Hershey Simplexを使えるようにしたい。