【gnuplot】do forループとplot forループ

こんてんつ

gnuplotの繰り返し処理についてまとめる。gnuplotには全体をループするdo forループと、plotコマンドの後ろでループするplot forループがあるので使い方について紹介する。

  1. do for [i=1:3] {}
  2. plot for [i=1:3]

※今回紹介のコードでは、下記のフォーマットを使用しております。

contents-open.hatenablog.com

例題

例によって、下記の様なirisデータセットのサンプルを用いる。

# iris.dat

Sepal.Length,Sepal.Width,Petal.Length,Petal.Width,Species
5.1,3.5,1.4,0.2,setosa
4.9,3,1.4,0.2,setosa
4.7,3.2,1.3,0.2,setosa
4.6,3.1,1.5,0.2,setosa
5,3.6,1.4,0.2,setosa
5.4,3.9,1.7,0.4,setosa
4.6,3.4,1.4,0.3,setosa
5,3.4,1.5,0.2,setosa
4.4,2.9,1.4,0.2,setosa
4.9,3.1,1.5,0.1,setosa
5.4,3.7,1.5,0.2,setosa
4.8,3.4,1.6,0.2,setosa
4.8,3,1.4,0.1,setosa
…

do for

コード

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 reverse
#set key invert
#set key spacing 0.7

#set grid

set xlabel  "x-label"
set ylabel  "y-label"
set xrange[4:8]
set yrange[0:7]
#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

array A[4]

A[2] = "Sepal.Width"
A[3] = "Petal.Length"
A[4] = "Petal.Width"

do for[i=2:4]{

INPUT_DATA_NAME = "iris.dat"
GRAPH_NAME = A[i]

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

plot INPUT_DATA_NAME using 1:i w points pt 2 lt (i-1) notitle

set output

}

reset

出力

f:id:norunblog:20210913231334p:plain

plot for

コード

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

array A[4]

A[2] = "Sepal.Width"
A[3] = "Petal.Length"
A[4] = "Petal.Width"

INPUT_DATA_NAME = "iris.dat"
GRAPH_NAME = "iris"

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

plot for [i=2:4] INPUT_DATA_NAME using 1:i w points pt 2 lt (i-1) title A[i]

set output

reset

出力

f:id:norunblog:20210913231513p:plain