2021-03-03 23:49:31
以前から毎日本を買ったら記録をしていて(この頃は毎週だけど)、ここの別の日記の方に買った本を列挙するとき行頭に●とか○とかを付けるようにして、その他の理由では決してこれらの丸を使わないようにしている。日記本文はMySQLに収納されているので、月ごと年ごとに丸の数を集計すれば買った本の冊数が判るというわけである。
それを数え上げ、gnuplotでグラフにしていた。Ubuntuではgnuplotをatp-get install... とやれば簡単にインストールできたのだが、Amazon Linux 2ではそれができない。そこで、JpGraphを使ってみることにした。
ダウンロードページから最新版をダウンロードしてきて、適当なところに展開する。基本的にはこれだけでいい。今回は日本語を使いたかったので、jpg-config.inc.phpの中にある日本語フォントを指定する行を:
define('MBTTF_DIR','/xxx/xxx/jpgraph/fonts/ja/');と書き換えた。/usr/share/fonts みたいなところでもいいのだけど、ipag.ttf と ipam.ttf が別のディレクトリにあるのをどうしたらいいか判らなくて、jpgraph内のfontsに両ファイルをコピーした。フォントはyum install ipa-gothic-fonts ipa-pgothic-fontsとやっただけ。
グラフを描かせるphpファイルの方には、冒頭で:
set_include_path("/xxx/xxx/jpgraph"); require_once("jpgraph.php"); require_once("jpgraph_line.php");としておく。今回は折れ線グラフなのでjpgraph_line.phpを使う。
MySQLデータから和書と洋書の数(●と○の数)を月ごとに集計するのは省略して、それぞれの集計値を$out_wa、$out_you、合わせた数を$out_ttlとしている。そこで:
$graph = new Graph(600,400); $graph ->setScale('textlin'); $graph->SetMargin(40,20,10,80); $graph ->legend->setFont(FF_GOTHIC, FS_NORMAL, 10); $graph->xaxis->SetTickLabels($xarray);として、グラフの大きさ、マージンの大きさ(これを調整しないと凡例がX軸ラベルと重なったりしてしまう)、フォントの種類などを指定する。
$line_wa = new LinePlot($out_wa); $graph -> Add($line_wa); $line_wa -> SetLegend('和書'); $line_yo = new LinePlot($out_you); $graph -> Add($line_yo); $line_yo -> SetLegend('洋書'); $line_el = new LinePlot($out_elc); $graph -> Add($line_el); $line_tl = new LinePlot($out_ttl); $graph -> Add($line_tl); $line_tl -> SetLegend('和書+洋書');のようにして線を3本設定して、
$graph->Stroke();で描かせる。
するとこんなふうになる。
こういう内容のグラフなら、積み重ね棒グラフの方が相応しいと思うが、まあいいのだ。