Odp: A może by tak kolejne How-To-Do?
Co może być nie tak, że nie może utworzyć tego pliku?
Nie jesteś zalogowany. Proszę się zalogować lub zarejestrować.
eko.one.pl → Termometr → A może by tak kolejne How-To-Do?
Strony Poprzednia 1 2
Zaloguj się lub zarejestruj by napisać odpowiedź
Co może być nie tak, że nie może utworzyć tego pliku?
Skrypt jest dobry. Strzelam że pod windowsem go robiłeś i masz niewłaściwe końce linii.
Robiłem to w edytorze vi
Mi się normalnie wykonuje.
Cezary mam pytanko korzystając z tego skryptu:
#!/bin/sh
GNUPLOT_COMMAND="/tmp/gnuplot_cmd"
touch ${GNUPLOT_COMMAND}
cat > ${GNUPLOT_COMMAND} << __EOF__
set terminal png small size 800,500
set output '/wykres.png'
set title "Wykres temperatury"
set xlabel "godzina"
set timefmt "%Y-%m-%d %H:%M:%S"
set xdata time
set ylabel "temperatura °C"
set format x "%H"
set grid
set key left
plot '/dane.txt' using 2:3 t 'temperatura na zewnatrz' with lines lt 1
quit
__EOF__
pobrać dane z pliku txt ale np aby pobrał tylko jakiś zakres danych np ostanie 24 godziny ?
Oto moj przykładowy plik z danymi
16-01-08 00:00:00 -10
16-01-08 01:00:00 -8
16-01-08 02:00:00 -5
16-01-08 03:00:00 -4
16-01-08 04:00:00 -2
16-01-08 05:00:00 0
16-01-08 06:00:00 1
16-01-08 07:00:00 2
16-01-08 08:00:00 3
16-01-08 09:00:00 4
16-01-08 10:00:00 4
16-01-08 11:00:00 5
16-01-08 12:00:00 6
16-01-08 13:00:00 7
16-01-08 14:00:00 5
16-01-08 15:00:00 5
16-01-08 16:00:00 4
16-01-08 17:00:00 3
16-01-08 18:00:00 3
16-01-08 19:00:00 4
16-01-08 20:00:00 3
15-01-08 21:00:00 2
16-01-08 22:00:00 1
16-01-09 23:00:00 0
16-01-09 00:00:00 0
16-01-09 01:00:00 -1
16-01-09 02:00:00 -2
16-01-09 03:00:00 -3
16-01-09 04:00:00 -6
16-01-09 05:00:00 -8
16-01-09 06:00:00 -9
16-01-09 07:00:00 -7
16-01-09 08:00:00 -6
16-01-09 09:00:00 -3
16-01-09 10:00:00 -2
16-01-09 11:00:00 0
16-01-09 12:00:00 2
16-01-09 13:00:00 3
16-01-09 14:00:00 4
16-01-09 15:00:00 3
16-01-09 16:00:00 2
16-01-09 17:00:00 1
16-01-09 18:00:00 0
16-01-09 19:00:00 -1
16-01-09 20:00:00 -2Jak jest zakres godzin tylko z 1 dnia to nie ma problemu i nie wiem teraz jak zrobić aby wygenerować wykres z ostatnich 24h
Zrób sobie tak żeby były dane które chcesz. Przez tail -n 24 możesz sobie wyciąć określoną liczbę linię. Jeżeli zaś liczna jest zmienna bi nie masz danych z niektórych godzin to zostaje obróbka pliki perlem/sedem/awk czy czym tam chcesz i umiesz. Zwykły skrypt.
zrobiłem to tak
#!/bin/sh
tail -n 25 dane.txt > dane24h.txt
GNUPLOT_COMMAND="/tmp/gnuplot_cmd"
touch ${GNUPLOT_COMMAND}
cat > ${GNUPLOT_COMMAND} << __EOF__
set terminal png small size 800,500
set output '/wykres.png'
set title "Wykres temperatury"
set xlabel "godzina"
set timefmt "%Y-%m-%d %H:%M:%S"
set xdata time
set ylabel "temperatura °C"
set format x "%H"
set grid
set key left
plot '/dane24h.txt' using 2:3 t 'temperatura na zewnatrz' with lines lt 1
quit
__EOF__
gnuplot ${GNUPLOT_COMMAND}
rm ${GNUPLOT_COMMAND}ale mam teraz jeszcze problem z generowaniem wykresu a mianowicie oś Y z temperaturą jest dobrze wyskalowana a oś x z godziną nie jest opisana prawidłowo mam 00 12 00 12 co może być źle jeszcze
Więc zrób odpowiednie opcje gnuplota żeby rysował oś X dla każdej danej.
PS. Zrobisz > dane24h.txt czyli do bieżącego katalogu a odwołujesz się do /dane24h.txt czyli w głównym. Na pewno tak chciałeś?
Przeczytałem parę poradników i nadal nie wiem czemu on nie chce mi sczytać 2 kolmy z pliku dane.txt kóra wygląda tak:
16-01-09 02:00 -5
16-01-09 03:00 -4
16-01-09 04:00 -2
16-01-09 05:00 0
16-01-09 06:00 1
16-01-09 07:00 2
16-01-09 08:00 3
16-01-09 09:00 4
16-01-09 10:00 4
16-01-09 11:00 5
16-01-09 12:00 6
16-01-09 13:00 7
16-01-09 14:00 5
16-01-09 15:00 5
16-01-09 16:00 4
16-01-09 17:00 3
16-01-09 18:00 3
16-01-09 19:00 4
16-01-09 20:00 3
15-01-09 21:00 2
16-01-09 22:00 1skrypt wygląda tak:
#!/bin/sh
GNUPLOT_COMMAND="/tmp/gnuplot_cmd"
touch ${GNUPLOT_COMMAND}
cat > ${GNUPLOT_COMMAND} << __EOF__
set terminal png small size 800,500
set output '/mnt/dysk/wykres.png'
set title "Wykres temperatury"
set xlabel "godzina"
set timefmt "%Y-%m-%d %H:%M"
set xdata time
set ylabel "temperatura °C"
set format x "%H:%M"
set grid
set key left
plot '/dane.txt' using 2:3 title 'dane rzeczywiste' with lines lt 1
quit
__EOF__
gnuplot ${GNUPLOT_COMMAND}
rm ${GNUPLOT_COMMAND}a wykres robi mi w ten sposób
Zdjęcia
Tą komendą set timefm został poinformowany o formacie
set format x "%H:%M" jest widoczny na wykresie
prawidłowo wskazany plik using 2:3 czyli kolumna 3 oś Y a kolumna 2 oś x a mimo wszystko źle opisuje oś.
Próbowałem na różne sposoby ale nie mogę sobie poradzić z tym opisem osi x
Oki problem rozwiązany błąd leżał po stronie set timefmt tak było "%Y-%m-%d %H:%M a kolumna 2 ma format %H:%M
Czy ten format danych dla gnuplota jest prawidłowy ?
70|2016-01-20 18:56:13|1013.49|-1.60|84.20|33.00|-4.60|21.00
71|2016-01-20 19:06:15|1013.64|-1.70|83.80|33.70|-4.50|21.00
72|2016-01-20 19:16:16|1013.70|-1.80|81.60|33.80|-4.40|21.00
73|2016-01-20 19:26:17|1013.67|-1.80|81.40|33.70|-4.40|21.00
74|2016-01-20 19:36:18|1013.62|-1.90|80.80|36.10|-4.30|21.00
75|2016-01-20 19:46:19|1013.61|-1.90|81.10|34.90|-4.30|21.20
76|2016-01-20 19:56:21|1013.68|-1.90|81.10|34.60|-4.30|21.30
77|2016-01-20 20:06:22|1013.71|-2.00|80.60|34.40|-4.30|21.40
78|2016-01-20 20:16:23|1013.77|-2.00|80.10|34.10|-4.10|21.40
79|2016-01-20 20:26:24|1013.86|-2.00|80.60|34.10|-4.20|21.40
80|2016-01-20 20:36:25|1013.81|-2.00|81.10|33.80|-4.30|21.30
81|2016-01-20 20:46:26|1013.96|-2.00|81.80|34.00|-4.40|21.30
82|2016-01-20 20:56:28|1014.06|-2.10|81.60|33.90|-4.40|21.30
83|2016-01-20 21:06:29|1014.08|-2.10|81.50|33.60|-4.40|21.30
84|2016-01-20 21:16:30|1014.08|-2.10|81.30|33.70|-4.20|21.20
85|2016-01-20 21:26:31|1014.13|-2.10|81.80|33.50|-4.30|21.20
86|2016-01-20 21:36:32|1014.19|-2.10|79.50|33.50|-4.00|21.20
87|2016-01-20 21:46:34|1014.22|-2.10|80.70|33.30|-4.20|21.10Bo mając ten skrypt chcę wygenerować wykres ciśnienia z kolumny 5 w stosunku do daty-czasu kolumna 3
#!/bin/sh
GNUPLOT_COMMAND="/tmp/gnuplot_cmd"
touch ${GNUPLOT_COMMAND}
cat > ${GNUPLOT_COMMAND} << __EOF__
set terminal png small size 800,500
set output '/mnt/dysk/meteo/cisnienie.png'
set title "Wykres temperatury"
set xlabel "godzina"
set timefmt "%Y-%m-%d %H:%M:%S"
set xdata time
set ylabel "Cisnienie °hPa"
set format x "%H"
set grid
set key left
plot '/mnt/dysk/meteo/dane.txt' using 3:5 t 'dane rzeczywiste' with lines lt 1
quit
__EOF__
gnuplot ${GNUPLOT_COMMAND}
rm ${GNUPLOT_COMMAND}i wywala mi ten błąd:
root@OpenWrt:~# wykres.sh
plot '/mnt/dysk/meteo/dane.txt' using 3:5 t 'dane rzeczywiste' with lines lt 1
^
"/tmp/gnuplot_cmd", line 11: warning: Skipping data file with no valid points
plot '/mnt/dysk/meteo/dane.txt' using 3:5 t 'dane rzeczywiste' with lines lt 1
^
"/tmp/gnuplot_cmd", line 11: x range is invalidO co mu chodzi przecie format daty jest dobry
| zamień na spacje, pewnie nie potrafi tego przetrawić w takiej formie.
Strony Poprzednia 1 2
Zaloguj się lub zarejestruj by napisać odpowiedź
eko.one.pl → Termometr → A może by tak kolejne How-To-Do?
Forum oparte o PunBB, wspierane przez Informer Technologies, Inc