OS: Rocky Linux 8.9
(Minumumインストール)
※ Xwindowsは導入していない
コマンドラインで作成できるアプリとして
Gnuplotやmathplotlib があるらしい。他にも探せばあると思うが、
今回は、グラフの種類が多く見た目的に良さそうなmathplotlib を使ってみてる
# dnf install python38.x86_64 python38-pip.noarch
# pip3 install numpy matplotlib
GUI操作の作成ではなくコマンドライン。
つまり、ガリガリとpythonで書いていくので、設定→グラフ作成→見た目チェックの繰り返しとなる
検証機上にも、apacheなどのWEBサーバーをインストして、生成した画像をブラウザ経由で見たほうが早い
$ vi 1.py
<codedoc code:python>
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
plt.plot([1,3,7])
plt.plot([2,2,6])
plt.savefig(“test.png”, format=“png”)
</codedoc>
$ python3 ./1.py
グラフタイトルに日本語を使ってみます。
<codedoc code:python>
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
plt.plot([1,3,7])
plt.plot([2,2,6])
plt.title(“てすと環境”)
plt.savefig(“test.png”, format=“png”)
</codedoc>
$ python3 ./1.py
./1.py:8: UserWarning: Glyph 12390 (\N{HIRAGANA LETTER TE}) missing from current font. plt.savefig("test.png", format="png") ./1.py:8: UserWarning: Glyph 12377 (\N{HIRAGANA LETTER SU}) missing from current font. plt.savefig("test.png", format="png") ./1.py:8: UserWarning: Glyph 12392 (\N{HIRAGANA LETTER TO}) missing from current font. plt.savefig("test.png", format="png") ./1.py:8: UserWarning: Glyph 29872 (\N{CJK UNIFIED IDEOGRAPH-74B0}) missing from current font. plt.savefig("test.png", format="png") ./1.py:8: UserWarning: Glyph 22659 (\N{CJK UNIFIED IDEOGRAPH-5883}) missing from current font. plt.savefig("test.png", format="png")
ワーニングメッセージが表示され、画像ファイルは作成されません。
# dnf install google-noto-sans-cjk-ttc-fonts.noarch google-noto-serif-cjk-ttc-fonts.noarch google-noto-cjk-fonts-common.noarch
# dnf install fontconfig.x86_64
# fc-cache -fv
$ python3 ./1.py
しかし、上記と同じワーニングメッセージで画像ファイルが表示されない
手法を変えて、明示的にフォントを指定してみる
<codedoc code:python>
import numpy as np import matplotlib as mpl import matplotlib.pyplot as plt from matplotlib.font_manager import FontProperties fp12 = FontProperties(fname=r'/usr/share/fonts/google-noto-cjk/NotoSansCJK-Regular.ttc', size=12) plt.plot([1,3,7]) plt.plot([2,2,6]) plt.title("てすと環境", fontproperties=fp12) plt.savefig("test.png", format="png")
</codedoc>