ユーザ用ツール

サイト用ツール


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

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

$ python3 ./1.py

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

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

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

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

$ 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
しかし、上記と同じワーニングメッセージで画像ファイルが表示されない

手法を変えて、明示的にフォントを指定してみる

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

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

linux上でグラフ画像を作成する.txt · 最終更新: 2024/01/19 00:51 by admin