ユーザ用ツール

サイト用ツール


linux上でグラフ画像を作成する

Linux上でグラフ画像を作成する

利用シチュエーション

  • 電気使用量や気温などをグラフ化したものを、WEBコンテンツとして掲載したい場合。
  • グラフ化する為の元データは、サーバーより日々自動収集されている
  • グラフ作成頻度が日々更新など、手動更新は現実的ではない

構築環境

OS: Rocky Linux 8.9

  (Minumumインストール)

  ※ Xwindowsは導入していない

グラフ作成ツール

コマンドラインで作成できるアプリとして

Gnuplotやmathplotlib があるらしい。他にも探せばあると思うが、

今回は、グラフの種類が多く見た目的に良さそうなmathplotlib を使ってみてる

mathplotlib のインストール

python3/pip

# dnf install python38.x86_64 python38-pip.noarch

mathplotlib

# 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

ブラウザ経由でグラフ画像を確認して、折れ線グラフが表示されていればOK

グラフで日本語(凡例や単位・タイトルなど)を使いたい

グラフタイトルに日本語を使ってみます。

<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>

日本語の文字化けは解消された。

linux上でグラフ画像を作成する.txt · 最終更新: by admin