gnuplot的shell脚本:关于单个图形中的各种输入文件,用于比较行

gnuplot的shell脚本:关于单个图形中的各种输入文件,用于比较行,shell,gnuplot,Shell,Gnuplot,我正在尝试绘制一个图形,并使用gnuplot将其保存为文件。我有各种文本文件。文本文件的数量不确定。每个文本文件包含两列。文本文件是关于线性吸收光谱的。第一列是频率,第二列是强度。我想通过将所有文件绘制在一张图表中来比较光谱之间的差异。我正在使用这个脚本来实现这一点。 #/bin/bash #绘制线性吸收光谱(las) #用法: #./lasplot.sh a.ods b.ods c.ods。。 j=1 因为我在$* 做 回声“正常化$i” maxle=`cat$i | tr-s',“”“|

我正在尝试绘制一个图形,并使用gnuplot将其保存为文件。我有各种文本文件。文本文件的数量不确定。每个文本文件包含两列。文本文件是关于线性吸收光谱的。第一列是频率,第二列是强度。我想通过将所有文件绘制在一张图表中来比较光谱之间的差异。我正在使用这个脚本来实现这一点。

#/bin/bash
#绘制线性吸收光谱(las)
#用法:
#./lasplot.sh a.ods b.ods c.ods。。
j=1
因为我在$*
做
回声“正常化$i”
maxle=`cat$i | tr-s',“”“| awk”开始{max=0}{if($2>max)max=$2}结束{print max}”`
echo“最大值为$maxle”
最大[$j]=$maxle
文件名[$j]=$i
((j=$j+1))
完成
num=$#
echo${filename[*]}
echo$num
读取-p“请选择设置数据范围(1)或自动设置(2):”设置范围
案例$setrange in
1)
读取-p“设置最小x范围:”最小x
读取-p“设置最大x范围:”最大x
;;
以撒
#调用gnuplot绘制1D地图

gnuplot您可以在调用gnuplot之前在脚本中准备plot命令,将其存储到变量中,然后在gnuplot输入中重用它(也避免了重复):

plotCmd=“plot”

对于((i=1;i您可以在调用gnuplot之前在脚本中准备plot命令,将其存储到变量中,然后在gnuplot输入中重用它(也可以避免重复):

plotCmd=“plot”
对于((i=1;i
#!/bin/bash

# plot linear absorption spectrum (las)
# Usage:
# ./lasplot.sh a.ods b.ods c.ods ..

j=1
for i in $*
do
    echo "Normalization $i"
    maxle=`cat $i|tr -s "," " "|awk 'BEGIN{max=0} {if($2>max) max=$2}END{print max}'`
    echo "  The max value is $maxle"
    max[$j]=$maxle
    filename[$j]=$i
    ((j=$j + 1))
done
num=$#
echo ${filename[*]}
echo $num

read -p "Please select set data range (1) or auto set(2): " setrange
case $setrange in
1)
   read -p "set min x range: " minx
   read -p "set max x range: " maxx
   ;;
esac

# call gnuplot to plot the 1D map
gnuplot << EOF
set datafile separator ","
set title 'Linear Absorption Spectra'
set xlabel '{/Symbol w} (cm^{-1})'
set ylabel 'Intensity (a.u.)'

#set data range
if (${setrange}==1){
set xrange [$minx:$maxx]
set yrange [0:1.1]
} else {
#set xrange [0:50]
#set yrange [0:50]
}

set size 1,1
set key right top

plot "${filename[1]}" using 1:(column(2)/${max[1]}) with lines  linewidth 2 ,\
"${filename[2]}" using 1:(column(2)/${max[2]}) with points pointtype 21

pause mouse keypress "Type a letter"

set term pdfcairo font "arial,12"
set term pdfcairo enh
set term pdfcairo size 6,5
set output "las.pdf"
plot "${filename[1]}" using 1:(column(2)/${max[1]}) with lines  linewidth 2 ,\
"${filename[2]}" using 1:(column(2)/${max[2]}) with points pointtype 21

EOF
plotCmd="plot"
for((i=1;i<=${num};i++))
do
    if [ $i -eq 1 ]; then
        join=" "
    else
        join=", "
    fi
    plotCmd="${plotCmd}${join}\"${filename[$i]}\" using 1:2 with lines"
done
gnuplot << EOF

... some other stuff ...
${plotCmd}

EOF