Mam wartość powiązaną z każdym dniem, jako taką:
120530 70.1
120531 69.0
120601 69.2
120602 69.5
# and so on for 200 lines
Podczas rysowania tych danych w gnuplot z liniami punkty danych są ładnie połączone. Niestety w miejscach powyżej tygodnia danych może brakować punktów. Gnuplot rysuje długie linie w tych odstępach. Jak mogę sprawić, aby gnuplot łączył punkty tylko w kolejnych dniach?
Rozwiązania wymagające wstępnego przetwarzania danych są w porządku, ponieważ już wygładzam je za pomocą skryptu.
Oto czego używam:
set xdata time
set timefmt "%y%m%d"
plot "vikt_ma.txt" using 1:2 with lines title "first line", \\
"" using 1:3 with lines title "second line"
Przykład:
Odpowiedzi:
Umieść pusty rekord (pusty wiersz) w miejscu, w którym nie ma danych. Z dokumentów :
źródło
Możesz użyć dowolnego ciągu, który nie jest liczbą, jako wartości brakujących punktów danych lub jawnie określić brakujący ciąg danych za pomocą
set datafile missing
polecenia.Jeśli następnie narysujesz linie za pomocą
wtedy Gnuplot opuści lukę.
źródło
Możesz także zrobić coś takiego, aby automatycznie tworzyć przerwy, gdy odległość między wartościami x przekroczy pewien próg:
Konieczne będzie dostosowanie początkowych wartości „poprzednich” i „bieżących” oraz progu („7200” w powyższym przykładzie).
Funkcja „yornothing” używa funkcji „shift” do zapisania jednej poprzedniej wartości x. Za każdym razem, gdy wywoływane jest nic, zwraca wartość y lub „0/0”, w zależności od tego, czy wartość bezwzględna różnicy między x a jej poprzednią wartością przekracza próg.
Wartość 0/0 każe gnuplotowi zignorować ten punkt.
źródło