Portál AbcLinuxu, 4. května 2025 23:06
http://imageshack.us/photo/my-images/191/98083526.png/Potřebuji, aby vykreslovaná čára končila například v čase 12 a dále byl graf už jen prázdný. Potíž je v tom, že všechna zdrojová data mám v jediném souboru ve formátu..
[2009/05/11 07:30:00] 0 [2009/05/11 07:31:00] 0.00999983333416666468 [2009/05/11 07:32:00] 0.01999866669333307936 [2009/05/11 07:33:00] 0.02999550020249566076 [2009/05/11 07:34:00] 0.03998933418663415945 [2009/05/11 07:35:00] 0.04997916927067832879 [2009/05/11 07:36:00] 0.05996400647944459919 [2009/05/11 07:37:00] 0.06994284733753276397 [2009/05/11 07:38:00] 0.07991469396917268730 [2009/05/11 07:39:00] 0.08987854919801104969..a nastavím-li..
set timefmt "[%Y/%M/%d %H:%M:%S]" set xdata time set format x "%H" set xrange ["[2009/05/11 07:30:00]":"[2009/05/12 07:29:00]"] plot ["[2009/05/11 07:30:00]":"[2009/05/11 12:00:00]"] "/data" using 1:3 with lines..tak dostanu..
http://imageshack.us/photo/my-images/850/13640905.png/Je-jasné, že nastavení rozsahu ovlivní rozsah zadaný v příkazu 'plot'. Lze nějak zařídit, aby se u předem dané x-ové hodnoty přestala data vykreslovat a výstup se uložil v daném stavu? Díky.
Řešení dotazu:
set timefmt "[%Y/%m/%d %H:%M:%S]"Při testování doporučuji
set format x "[%Y/%m/%d\n%H:%M:%S]"Je zbytečné zadávat rozsah pomocí xrange i plot [], protože pak má přednost rozsah v parametru plotu (a vypíná to zoomování rozsahu na ose x myší). V gnuplotu 4.6.0 mi to funguje dle očekávání.
funguje dle očekávání, ale předpokládám, že tím myslíš situaci, že Gnuplot přestane vykreslovat čáru a graf je tak uložen nehotový - tedy přesně tak, jak "tazatel požaduje". Tohle řešení ale (pravděpodobně) nesplňuje podmínku, že ve zpracovávaném souboru ještě nějaká data jsou. Respektive Gnuplot se ti zastaví z důvodu, že již v souboru s daty žádné další nevykreslené hodnoty nejsou. Jenže já bych potřeboval, aby se zastavil i přestože v souboru s daty ještě nějaké nevykreslené hodnoty jsou. Ufff. Obsah datového souboru:
http://pastebin.com/vwUwRy9DNicméně díky alespoň za snahu pomoci. PS: Pakliže jsem tvé řešení pochopil špatně, tak bude problém v mém Gnuplotu 4.4, ale nevsázel bych na to.
set offset
. Konkrétně tedy v tomto případě časové osy x:
set offset 4*3600,4*3600
plot cos(3*x) > 0 ? sin(x) : 0/0
plot 'data.dat' using 1:($1 > 5 || $1 < 10 ? 1/0 : $3)pro časová data trošku složitější:
set xrange ["[2009/05/11 12:00:00]":"[2009/05/12 02:00:00]"] myfmt = "%Y/%m/%d %H:%M:%S" x1=strptime(myfmt, "2009/05/11 12:00:00") x2=strptime(myfmt, "2009/05/12 04:00:00") plot "data2.dat" using 1:(timecolumn(1) < x1 || timecolumn(1) > x2 ? 1/0 : $3) with linespointsAle pomocí
set offset
(viz můj příspěvek výše) je to zjevně jednodušší.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.