sudoがないのでいつも憤死しそうになる。あればaptなりyumなりでmsttcore-fonts
を入れるだけなんですけどね。。
まあ頑張りましょう。
フォントのインストール
フォントですがあまり知られていませんが$HOME
配下にインストールすることが可能です。
あとTimes New Romanはmsttcore-fonts
なるパッケージに入っておりRPMが入手可能ですので、ここからフォントファイルを取り出してインストールします。具体的には以下:
# RPM取り出したら`etc`と`usr`なるディレクトリが作られて後で鬱陶しいのでtmpの下で作業する
mkdir fonts_downloads
cd fonts_downloads
# `msttcore fonts RPM`とかでググるとRPM配布ページが見つかる。以下は例
wget https://rpmfind.net/linux/sourceforge/m/ms/mscorefonts2/rpms/msttcore-fonts-installer-2.6-1.noarch.rpm
# `rpm2cpio`と`cpio`が無かったら泣きましょう。こいつらのインストール方法は知らん
rpm2cpio msttcore-fonts-installer-2.6-1.noarch.rpm | cpio -id
# うまくいけば`usr/share/fonts`の下にフォントが展開される。これを`$HOME`配下の適切なディレクトリにコピーする
# フォントインストール用のディレクトリは環境によって違うかもしれない(以下はRHEL7.8の場合)
font_install_dir=$HOME/.fonts
rsync -auv usr/share/fonts/ $HOME/.fonts/
matplotlibの設定更新
キャッシュを消さないと新しいフォントを見つけてくれないらしいので消しましょう。@matplotlib/3.6.2
rm -rv .cache/matplotlib
フォントの設定は、plt.rcParams
でやるのが常套だけどめんどくさい、と思っていたらmatplotlibrc
なるものがあるそうですね1。
これ使えばスクリプトごとにrcParamsを書き直す必要がないので良いですね。
まずは自分の環境におけるmatplotlibrcの置き場所を調べましょう。
python3 -c 'import matplotlib as mpl; print(mpl.get_configdir())'
# 手元の(というかssh先だが)環境では`$HOME/.config/matplotlib`と出てきた
で、出てきたディレクトリの下にファイルを作成します。なおフォント以外の項目は趣味です。
$HOME/.confg/matplotlibrc
font.family : serif
font.serif : Times New Roman
mathtext.fontset : stix
axes.linewidth : 0.5
xtick.major.width : 0.5
ytick.major.width : 0.5
figure.figsize : 5.8, 4.1
font.size : 12
以上です。あとは適当にプロットしたらデフォルトでTimes New Romanが有効になっています。
テスト
from matplotlib import pyplot as plt
import numpy as np
x = np.arange(0, 1, 0.01)
plt.plot(x, np.sin(2*np.pi*x), label=r'sin $2\pi x$')
plt.xlabel(r'$x$')
plt.ylabel(r'$y$')
plt.legend()
よかったですね。