Zobrazení více spekter v jednom obrázku pomocí Gnuplotu

Tento článek navazuje na předchozí o zobrazování spekter pomocí Gnuplotu. Velmi často se hodí zobrazit více spekter/grafů v jednom obrázku. Tady je jednoduchý způsob, jak toho docílit.

Použijeme stejné datové soubory, jako v předchozím návodu. Skript upravíme na následující podobu:

#datové soubory
textFile = 'data1.dpt'
textFile2 = 'data2.dpt'
set key center top title " "
set label "[Co(NH_3)_5ONO]Cl_2" at 2400,2.0 center font "Arial,20" tc rgb "red"
set label "[Co(NH_3)_5NO_2]Cl_2" at 2400,1.9 center font "Arial,20" tc rgb "blue"
set xlabel "Vlnočet [cm^{-1}]"
set xrange [4000 : 400.0]
set yrange [0 : 2.3]
set ylabel "Absorbance"
set style line 1 lt 2 lc rgb "red" lw 3
set border 3
set xtics 200 nomirror
set ytics nomirror
show style line
show label
#styly linií pro jednotlivé křivky
set style line 1 lc rgb '#ff0000' lt 1 lw 1.1 pt 0 ps 0.5
set style line 2 lc rgb '#0000ff' lt 1 lw 1.1 pt 0 ps 0.5

set term pngcairo size 1500,1000 crop
textFileLen = strlen(textFile);
set output "test.png"

#vykreslení obou spekter
plot textFile with linespoints ls 1 notitle,\
textFile2 with linespoints ls 2 notitle

Pomocí tohoto skriptu získáme obrázek podobný tomuto:

test

Barvu jednotlivých spekter nastavíme v řádcích set style … a pak je použijeme při vykreslení spektra, klíčové slovo je ls a číslo stylu čáry.

Často se hodí spektra odsadit, aby šlo lépe porovnat rozdíly. Toho docílíme malou úpravou skriptu:

#datové soubory
textFile = 'data1.dpt'
textFile2 = 'data2.dpt'
set key center top title " "
set label "[Co(NH_3)_5ONO]Cl_2" at 2400,2.2 center font "Arial,20" tc rgb "red"
set label "[Co(NH_3)_5NO_2]Cl_2" at 2400,2.1 center font "Arial,20" tc rgb "blue"
set xlabel "Vlnočet [cm^{-1}]"
set xrange [4000 : 400.0]
set yrange [0 : 2.3]
set ylabel "Absorbance"
set style line 1 lt 2 lc rgb "red" lw 3
set border 3
set xtics 200 nomirror
set ytics nomirror
show style line
show label
#styly linií pro jednotlivé křivky
set style line 1 lc rgb '#ff0000' lt 1 lw 1.1 pt 0 ps 0.5
set style line 2 lc rgb '#0000ff' lt 1 lw 1.1 pt 0 ps 0.5

set term pngcairo size 1500,1000 crop
textFileLen = strlen(textFile);
set output "test2.png"

#vykreslení obou spekter
plot textFile with linespoints ls 1 notitle,\
textFile2 using ($1):($2 + 0.2) with linespoints ls 2 notitle

Nejdůležitější úprava je v posledním řádku skriptu. Klauzule using umožňuje manipulaci s daty. První datový sloupec je uložen do proměnné $1 a druhý do $2. Pak už lze snadno zvýšit hodnotu y-souřadnice a tím jedno spektrum zvednout o 0,2 dílku na ose y. Jako vedlejší efekt je ještě vhodné upravit souřadnice popisků spekter a rozsah osy y.

test

Tímto snadným způsobem lze zobrazit dvě a více spekter v jednom obrázku. Pokud máme více spekter, tak lze snad napsat skriptu v perlu (příp. php), který bude obrázky spekter pomocí gnuplotu generovat automaticky.

Leave a Reply

Tato stránka používá Akismet k omezení spamu. Podívejte se, jak vaše data z komentářů zpracováváme..