【25.02.05更新】Julia v1.11.3で動作する内容に改めました(対処のための特別なコードが廃止されており、対処はより単純になっていました)。デッドリンクを修正しました。
【注意】Windows環境を前提とした説明です。
Plots.jl+バックエンドPyPlotで描くグラフに日本語を表示させる方法
はじめに
以下の参考1の解説に従ってfontを指定すれば、難なく日本語を表示できる場合もありますが、上手くいかない場合に遭遇することもあるかと思います。ここに上手くいかない場合の対処法をメモとして残しておきます。
【参考1】Plotsの公式解説
上手くいかない場合の対処法
①使用したいフォントファイル(おそらくTTFでないと動作しない)を用意する。
※ここではIPAexフォントをダウンロードしてOSに追加したとして話を進めます。
②matlibplotのfontlistを更新する。
ディレクトリC:\Users\某文字列\.matplotlib
に行き、fontlist-v某数字.json
を消します。
※消すことで、次回のmatlibplot動作時、OSに追加されている最新のフォントが認識され、matlibplotが使用できるフォントの情報であるfontlist-v某数字.json
が書き改められます。
動作テスト
前記事の【例1】と【例2】に日本語を付けて表示させた場合を以下に示します。
【例1日本語付】1つのグラフエリアに曲線を2つ描画
using Plots
import Plots.PlotMeasures.px #pxを単位のように使用するための準備(Plotsのバージョンアップに伴ってpxはimportやusingしておく必要が出た)
pyplot()
x=collect(0:0.01:2*pi)
y1=sin.(x)
y2=cos.(x)
plot(x, y1, xlab="横軸 x [mm]",
ylab="縦軸 y [mm]",
lab="正弦",
leg=:bottomleft,
margin=15px,
guidefont=font("IPAexGothic",11), #軸名のフォントとサイズの指定(サイズ指定もしないとサイズ14に固定されてしまう)
legendfont=font("IPAexGothic",8), #凡例のフォントとサイズの指定
tickfont=font("IPAexGothic",8)) #目盛のフォントとサイズの指定(他とフォント揃えるためにだけ指定)
plot!(x, y2, lab="余弦")
【例2日本語付】上下2段組のグラフエリアを作成し、それぞれに曲線を1つ描画
using Plots
import Plots.PlotMeasures.px
pyplot()
x=collect(0:0.01:2*pi)
y1=sin.(x)
y2=cos.(x)
p1=plot(x, y1, lab="正弦");
p2=plot(x, y2, lab="余弦");
plot(p1, p2, xlab="横軸 x [mm]",
ylab="縦軸 y [mm]",
leg=:bottomleft,
margin=15px,
layout=grid(2,1),
guidefont=font("IPAexGothic",11), #軸名のフォントとサイズの指定(サイズ指定もしないとサイズ14に固定されてしまう)
legendfont=font("IPAexGothic",8), #凡例のフォントとサイズの指定
tickfont=font("IPAexGothic",8)) #目盛のフォントとサイズの指定(他とフォント揃えるためにだけ指定))