Ich versuche, ein Diagramm zu plotten und speichern Sie es als Datei mit gnuplot. Ich habe verschiedene Textdateien. Die Anzahl der Textdateien ist nicht sicher. Jede Textdatei enthält zwei Spalten. Die Textdatei behandelt das lineare Absorptionsspektrum. Die erste Spalte ist die Frequenz und die zweite ist die Intensität. Ich möchte den Unterschied zwischen den Spektren vergleichen, indem Sie sie in einem einzigen Diagramm für alle Dateien aufzeichnen. Ich benutze dieses Skript, um das zu tun. Shell-Skript von gnuplot: über verschiedene Eingabedateien in einem einzigen Diagramm zum Vergleichen der Zeilen
#!/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
nur Mein Skript zwei Textdateien zeichnen können? Wie kann es geändert werden, um mehrere Eingabedateien zu plotten?