2015-12-29 2 views
0

Gnuplot считывает данные о погоде из огромного файла с именем file.dat и отображает данные о погоде за определенную дату и время.Gnuplot не обрабатывает данные, если на данный момент данных не имеется.

Но если нет данных для заданной даты и времени (xrange), GNUPLOT аварий.

Как я могу сказать GNUPLOT, если нет данных для заданной даты и времени, отображать текст в выходном изображении?

("There is no data available, I am sorry") 

Ошибка, если нет доступных данных:

line 0: all points y2 value undefined! 

script.dem файл, который загружается Gnuplot:

reset 


#SET TERMINAL 
set term svg 
set output 'temp-verlauf.svg' 
set title "Temperaturverlauf" 

#Axes label 
set xlabel "Messzeitpunkt" 
set ylabel "Luftfeuchte/Temperatur" 
set y2label "Luftdruck" 

#Axis setup 
set xdata time # x-Achse wird im Datums/Zeitformat skaliert 
set timefmt "%d.%m.%Y\t%H:%M:%S" # Format Zeitangaben yyyy.mm.dd_hh:mm:ss 
set format x "%H:%M" # Format für die Achsenbeschriftung 


#Axis ranges 
set yrange [0:60] # die y-Achse geht von:bis 

#Tics 
set ytics nomirror 
set y2tics nomirror 

#OTHER 
set datafile separator "\t" 
set xrange ["06.11.2014 14:00:00":"07.11.2014 21:00:00"] 

plot \ 
"file.dat" every 10 using 1:5 title "Luftfeuchte" with lines, \ 
"file.dat" every 10 using 1:6 title "Temperatur" with lines, \ 
"file.dat" every 10 using 1:7 title "Luftdruck" with lines axes x1y2, \ 
"file.dat" every 10 using 1:17 title "Niederschlagsintensitaet Synop (4677)" with lines 

EDIT

Благодаря пользователя "bibi".
У него была хорошая идея позволить gnuplot plot -1 иметь данные, если в файле file.dat нет ничего доступного.

Сценарий будет выглядеть:

reset 


#SET TERMINAL 
set term svg 
set output 'temp-verlauf.svg' 
set title "Temperaturverlauf" 

#Axes label 
set xlabel "Messzeitpunkt" 
set ylabel "Luftfeuchte/Temperatur" 
set y2label "Luftdruck" 

#Axis setup 
set xdata time # x-Achse wird im Datums/Zeitformat skaliert 
set timefmt "%d.%m.%Y\t%H:%M:%S" # Format Zeitangaben yyyy.mm.dd_hh:mm:ss 
set format x "%H:%M" # Format für die Achsenbeschriftung 


#Axis ranges 
set yrange [0:60] # die y-Achse geht von:bis 

#Tics 
set ytics nomirror 
set y2tics nomirror 

#OTHER 
set datafile separator "\t" 
set xrange ["06.11.2014 14:00:00":"07.11.2014 21:00:00"] 

plot \ 
-1 axes x1y2, \ 
-1 axes x1y1, \ 
"file.dat" every 10 using 1:5 title "Luftfeuchte" with lines, \ 
"file.dat" every 10 using 1:6 title "Temperatur" with lines, \ 
"file.dat" every 10 using 1:7 title "Luftdruck" with lines axes x1y2, \ 
"file.dat" every 10 using 1:17 title "Niederschlagsintensitaet Synop (4677)" with lines 

ответ

2

Самое простое решение, что пришло мне в голову, чтобы нарисовать горизонтальную линию вне черчения области (-1 это нормально, так как у вас есть set yrange [0:60]):

plot \ 
-1, \ 
"file.dat" every 10 using 1:5 title "Luftfeuchte" with lines, \ 
"file.dat" every 10 using 1:6 title "Temperatur" with lines, \ 
"file.dat" every 10 using 1:7 title "Luftdruck" with lines axes x1y2, \ 
"file.dat" every 10 using 1:17 title "Niederschlagsintensitaet Synop (4677)" with lines 

Кроме того, внутренняя переменная gnuplot GPVAL_ERRNO будет отличной от нуля, если произойдет что-то странное, вы можете проверить это и распечатать баннер на экране.

+0

Это хорошее решение. Не самое лучшее, потому что линия -1. Но да, большое спасибо. Но я делаю -1 оси x1y2, \ -1 оси x1y1, \, чтобы иметь данные во всех осях. – user5206643

Смежные вопросы