1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

gnuplot: ビットマップ画像を PDF として出力

Last updated at Posted at 2021-02-18

はじめに

学術論文に掲載する図は多くの場合,ビットマップ画像ではなくベクタ画像が求められる(と筆者は考えている).
グラフの目盛りや凡例など,ベクタ画像にしておいた方が後々編集もしやすく,拡大縮小にも柔軟に対応できるため,利便性が高い.

一方で,膨大な量の点列など,ベクタ画像には不向きなデータが存在する.
当該データは上記の利得が得られないだけでなく,容量が大きくなり大変扱いづらい.
この問題を解決するためにはどのようなやり方が考えられるだろうか.

解決策

いくつか方法はあるだろうが,gnuplot を使った解決策として次のような手順が有効である.

  1. ベクタ画像に不向きなデータを,目盛りや凡例などの情報は付与せずに PNG 形式で出力する
  2. 用意した PNG 形式の画像を新たに PDF として出力する

具体例

Logistic map の bifurcation diagram(分岐図)で実際に PDF を作成してみる.
データ点列は別記事で紹介した方法で out.bf1 として生成した.

スクリプト

設定ファイル

個々に設定する必要のある値をひとまとめに設定ファイル内に置いた.

config.gp
# PNG settings
FILE_NAME  = "out.bf1" # 入力 データファイル名
PNG_NAME   = "out.png" # 出力 PNG ファイル名
PNG_WIDTH  = 2000      # PNG の解像度(横)
PNG_HEIGHT = 2000      # PNG の解像度(縦)
ALPHA      = "D0"      # alpha-channel: 0-255 in hex
COLOR      = "EB811B"  # 色指定

XFROM = 2.4  # 出力範囲(x 軸)
XTO   = 4.0  # 出力範囲(x 軸)
YFROM = 0    # 出力範囲(y 軸)
YTO   = 1    # 出力範囲(y 軸)

# PDF settings
PDF_NAME   = "out.pdf"  # 出力 PDF ファイル名

XLABEL = "{/:Italic r}" # 凡例(x 軸)
YLABEL = "{/:Italic x}" # 凡例(y 軸)

#EOF

PNG 出力

makepng.gp
load("config.gp");
set term png size PNG_WIDTH, PNG_HEIGHT transparent truecolor

set lmargin screen 0
set rmargin screen 1
set tmargin screen 0
set bmargin screen 1
unset tics
unset border
unset key

set out PNG_NAME

set xr [XFROM:XTO]
set yr [YFROM:YTO]

p FILE_NAME every ::100 w d lc rgb "#".ALPHA.COLOR
#EOF
  • transparent で透明度を有効にし,ALPHA で値を指定しています.

PDF 出力

makepdf.gp
load("config.gp");

set term pdf font "Times-New-Roman, 24" size 8, 8
set out PDF_NAME

set grid front
set tics
set size sq

set xr [XFROM:XTO]
set yr [YFROM:YTO]

set xlabel XLABEL
set ylabel YLABEL

p PNG_NAME binary filetype=png \
  origin=(XFROM, YFROM) dx=((XTO-XFROM)/(1.*PNG_WIDTH)) dy=((YTO-YFROM)/(1.*PNG_HEIGHT)) \
  with rgbimage

#EOF

ディレクトリ構成

.
├── config.gp
├── makepdf.gp
├── makepng.gp
└── out.bf1

実行

$ gnuplot makepng.gp # ファイル名「PNG_NAME」の PNG が生成される
$ gnuplot makepdf.gp # ファイル名「PDF_NAME」の PDF が生成される

out.jpg

Qiita の仕様の都合で PDF はアップロードできないため,ここでは JPG にエクスポートしてある.

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?