gnuplot自分用のフォーマット(サンプルスクリプト)

こんてんつ

自分用のサンプルスクリプトを紹介する。loadを使うことによって可能な限りすっきりさせた。

データと結果イメージ

インプットデータ

# datafile.dat

0   392 322 453 530 660
100 254 407 506 528 723
200 337 463 403 661 760
300 269 399 462 611 780
400 327 312 501 613 660
500 287 474 514 646 778
600 379 371 478 640 602
700 327 445 451 646 608
800 205 326 583 616 706
900 339 394 414 603 684
1000    371 311 470 525 627

結果グラフ画像

f:id:norunblog:20210829221022p:plain

スクリプト

メイン

load 'C:\Users\norun\Desktop\gnu\pre\subst_underline.txt'
load 'C:\Users\norun\Desktop\gnu\pre\config_letter_style.txt'
load 'C:\Users\norun\Desktop\gnu\pre\set_style_line_1.txt'

##### 軸、凡例設定 #####

set key left top
set key Left
set key reverse
#set key invert
#set key spacing 0.7

#set grid

set xlabel  "x-label"
set ylabel  "y-label"
#set xrange[0:1000]
#set yrange[0:1000]
#set xtics 200
#set ytics 200

#load 'C:/Users/norun/Desktop/gnu/pre/config_y2_letter_style.txt'
#set y2label "y2-label" rotate by 270
#set y2range[0:500]
#set y2tics 100

##### 出力設定とサイズ #####

set size ratio 1 1
set terminal png size 1920,1920

##### 結果出力、プロット #####

INPUT_DATA_DIREC = "C:/Users/norun/Desktop/gnu/format"
OUTPUT_DIREC_PATH = "C:/Users/norun/Desktop"

cd INPUT_DATA_DIREC
INPUT_DATA_NAME = "datafile.dat"

GRAPH_NAME = "name_name"

set output sprintf('%s/%s.png',OUTPUT_DIREC_PATH,GRAPH_NAME)
set title strsubst(GRAPH_NAME, "_", "\\_")

plot INPUT_DATA_NAME using 1:2 w lines ls 1 title "No1",\
INPUT_DATA_NAME using 1:2 w points pt 2 lw 5 lc "black" notitle,\
INPUT_DATA_NAME using 1:3 w lines ls 2 title "No2",\
INPUT_DATA_NAME using 1:3 w points pt 2 lw 5 lc "black" notitle,\
INPUT_DATA_NAME using 1:4 w lines ls 3 title "No3",\
INPUT_DATA_NAME using 1:4 w points pt 2 lw 5 lc "black" notitle

set output

reset

プリアンブル

# subst_underline.txt

substr_str_before(str, target)=substr(str, 1, strstrt(str,target)-1)
substr_str_after(str, target)=\
     substr(str, strstrt(str,target)+strlen(target), strlen(str))
substr_after(str, index) = substr(str, index, strlen(str))
substr_before(str, index) = substr(str, 1, index)
strsubst_sub(str, index, target, subst)=\
     strstrt(substr_after(str,index),target)==0 ? str :\
     strsubst_sub( substr_before(str, index-1) . substr_str_before(substr_after(str,index),target) . \
     subst . substr_str_after(substr_after(str,index),target),\
     index+strstrt(substr_after(str,index),target)+strlen(subst)-strlen(target),\
     target, subst)
strsubst(str, target, subst)=strsubst_sub(str,1,target,subst)
# config_letter_style.txt

set xlabel font "Arial,60"
set ylabel font "Arial,60"
set title font "Arial,60"
set xtics font "Arial,60"
set ytics font "Arial,60"
set key font"Arial,40"
set xtics offset    -1.0,-3.5
set xlabel offset    0.0,-6.5
set ytics offset    -1.0,-1.3
set ylabel offset  -15.0, 0.0
set title offset    -0.0,-0.0
set lmargin 32
set rmargin 32
set tmargin 10
set bmargin 10

set border lw 6
# set_color_style_1.txt

set style line 1 lw 8.0 ps 5.0 lc rgb "#FF4B00" 
set style line 2 lw 8.0 ps 5.0 lc rgb "#005AFF"
set style line 3 lw 8.0 ps 5.0 lc rgb "#03AF7A"
set style line 4 lw 8.0 ps 5.0 lc rgb "#4DC4FF"
set style line 5 lw 8.0 ps 5.0 lc rgb "#F6AA00"
set style line 6 lw 8.0 ps 5.0 lc rgb "#FFF100"
set style line 7 lw 8.0 ps 5.0 lc rgb "#990099"
set style line 8 lw 8.0 ps 5.0 lc rgb "#000000"
set style increment user
# config_y2_letter_style.txt

set y2label font "Arial,60"
set y2tics font "Arial,60"
set y2tics offset    0.0,-1.3
set y2label offset  15.0, 0.0

解説

プロットのスタイル

  • set_color_style_1.txtでは、太さlw、ポイントのサイズps、色lc rgbまで指定した。
  • 線を描くには、w lines ls 1などとすれば良い。
  • ポイントを描くには、w points pt 2 lw 5 lc "black"の様に、ポイントタイプと太さを指定してあげると良い。

サイズ変更

縦横比を1:1以外にする場合は下記を参考に。

縦0.75:横1.00

set size ratio 0.75 1
set terminal png size 1920,1440

f:id:norunblog:20201115153347p:plain

縦0.50:横1.00

set size ratio 0.5 1
set terminal png size 1920,1080

f:id:norunblog:20201115153722p:plain