1 (edytowany przez smtv 2015-02-21 20:23:12)

Temat: Generowanie wykresów w Gnuplot

Mam taki problem z którym nie umię sobie poradzić, mianowicie mam skrypt który generuje wykresy. Na każdym wykresie są opisy temperatur max, min oraz aktualna o ile pierwszy wykres jest ok ,to następne dwa mają jakby nałożone dane min, max i aktualna na siebie( tak jakby gnuplot nakładał na siebie kilka zmiennych na nowo generowany pnd).
Poniżej skrypt:


#!/bin/sh

##### opis dla temp. zasilania CO  ###############

## 1 godz.
min_t_CO_1h=`cut -d' ' -f3 /Meteo/temp/co_zasilanie_1h.txt | sort -n | head -1 `
max_t_CO_1h=`cut -d' ' -f3 /Meteo/temp/co_zasilanie_1h.txt | sort -n | tail -1 `
akt_CO_1h=`cut -d' ' -f3 /Meteo/temp/co_zasilanie_1h.txt | tail -1 `

## 24 godz.
min_t_CO_24h=`cut -d' ' -f3 /Meteo/temp/co_zasilanie_24h.txt | sort -n | head -1 `
max_t_CO_24h=`cut -d' ' -f3 /Meteo/temp/co_zasilanie_24h.txt | sort -n | tail -1 `
akt_CO_24h=`cut -d' ' -f3 /Meteo/temp/co_zasilanie_24h.txt | tail -1 `

## 7 dni
min_t_CO_7d=`cut -d' ' -f3 /Meteo/temp/co_zasilanie_7d.txt | sort -n | head -1 `
max_t_CO_7d=`cut -d' ' -f3 /Meteo/temp/co_zasilanie_7d.txt | sort -n | tail -1 `
akt_CO_7d=`cut -d' ' -f3 /Meteo/temp/co_zasilanie_7d.txt | tail -1 `

## miesiąc
min_t_CO_30d=`cut -d' ' -f3 /Meteo/temp/co_zasilanie_30d.txt | sort -n | head -1 `
max_t_CO_30d=`cut -d' ' -f3 /Meteo/temp/co_zasilanie_30d.txt | sort -n | tail -1 `
akt_CO_30d=`cut -d' ' -f3 /Meteo/temp/co_zasilanie_30d.txt | tail -1 `




#####################################################

GNUPLOT_COMMAND="/tmp/gnuplot_cmd"
touch ${GNUPLOT_COMMAND}

cat > ${GNUPLOT_COMMAND} << __EOF__

################ temperatura zasilania CO ########################

set terminal png small size 800,500
set output '/www1/temp_co_1h.pnd'
set title "Ostatnia godzina"
set xlabel "godzina"
set timefmt "%Y-%m-%d %H:%M:%S"
set xdata time
set autoscale
set ylabel "temperatura °C"
set format x "%H:%M"
set grid x x2 y y2 mx my mx2 my2
set key left
set label "aktualna: ${akt_CO_1h}" at graph 0.4, graph 0.97
set label "maksymalna: ${max_t_CO_1h}" at graph 0.4, graph 0.92
set label "minimalna: ${min_t_CO_1h}" at graph 0.4, graph 0.87
plot '/Meteo/temp/co_zasilanie_1h.txt' using 1:3 t 'dane rzeczywiste' with lines lt 1 lw 2;

set terminal png small size 800,500
set output '/www1/temp_co_24h.pnd'
set title "Doba"
set xlabel "Godziny"
set timefmt "%Y-%m-%d %H:%M:%S"
set xdata time
set autoscale
set ylabel "temperatura °C"
set format x "%H:%M"
set grid x x2 y y2 mx my mx2 my2
set key left
set label "aktualna: ${akt_CO_24h}" at graph 0.4, graph 0.97
set label "maksymalna: ${max_t_CO_24h}" at graph 0.4, graph 0.92
set label "minimalna: ${min_t_CO_24h}" at graph 0.4, graph 0.87
set key spacing 1.3
plot '/Meteo/temp/co_zasilanie_24h.txt' using 1:3 t 'temp.wody zasilania CO' with lines lt 1 lw 2;

set terminal png small size 800,500
set output '/www1/temp_co_7d.pnd'
set title "Tydzien"
set xlabel "Dzien"
set timefmt "%Y-%m-%d %H:%M:%S"
set xdata time
set autoscale
set ylabel "temperatura °C"
set format x "%d\n%H:%M"
set grid x x2 y y2 mx my mx2 my2
set key left
set label "maksymalna: ${max_t_CO_7d}" at graph 0.4, graph 0.97
set label "minimalna: ${min_t_CO_7d}" at graph 0.4, graph 0.92
set key spacing 1.3
set label "aktualna: ${akt_CO_7d}" at graph 0.4, graph 0.97
set label "maksymalna: ${max_t_CO_7d}" at graph 0.4, graph 0.92
set label "minimalna: ${min_t_CO_7d}" at graph 0.4, graph 0.87
plot '/Meteo/temp/co_zasilanie_7d.txt' using 1:3 t 'temp.wody zasilania CO' with lines lt 1 lw 2;

quit
__EOF__

wdr3600
wdr4300

2

Odp: Generowanie wykresów w Gnuplot

To wykonaj to w trzech obiegach  gnuplota po prostu, nie tak jak teraz w jednym po prostu.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3

Odp: Generowanie wykresów w Gnuplot

czyli może być tak:

#!/bin/sh

##### opis dla temp. zasilania CO  ###############

## 1 godz.
min_t_CO_1h=`cut -d' ' -f3 /Meteo/temp/co_zasilanie_1h.txt | sort -n | head -1 `
max_t_CO_1h=`cut -d' ' -f3 /Meteo/temp/co_zasilanie_1h.txt | sort -n | tail -1 `
akt_CO_1h=`cut -d' ' -f3 /Meteo/temp/co_zasilanie_1h.txt | tail -1 `

## 24 godz.
min_t_CO_24h=`cut -d' ' -f3 /Meteo/temp/co_zasilanie_24h.txt | sort -n | head -1 `
max_t_CO_24h=`cut -d' ' -f3 /Meteo/temp/co_zasilanie_24h.txt | sort -n | tail -1 `
akt_CO_24h=`cut -d' ' -f3 /Meteo/temp/co_zasilanie_24h.txt | tail -1 `

## 7 dni
min_t_CO_7d=`cut -d' ' -f3 /Meteo/temp/co_zasilanie_7d.txt | sort -n | head -1 `
max_t_CO_7d=`cut -d' ' -f3 /Meteo/temp/co_zasilanie_7d.txt | sort -n | tail -1 `
akt_CO_7d=`cut -d' ' -f3 /Meteo/temp/co_zasilanie_7d.txt | tail -1 `

## miesiąc
min_t_CO_30d=`cut -d' ' -f3 /Meteo/temp/co_zasilanie_30d.txt | sort -n | head -1 `
max_t_CO_30d=`cut -d' ' -f3 /Meteo/temp/co_zasilanie_30d.txt | sort -n | tail -1 `
akt_CO_30d=`cut -d' ' -f3 /Meteo/temp/co_zasilanie_30d.txt | tail -1 `




#####################################################

GNUPLOT_COMMAND="/tmp/gnuplot_cmd"
touch ${GNUPLOT_COMMAND}

cat > ${GNUPLOT_COMMAND} << __EOF__

################ temperatura zasilania CO ########################

set terminal png small size 800,500
set output '/www1/temp_co_1h.pnd'
set title "Ostatnia godzina"
set xlabel "godzina"
set timefmt "%Y-%m-%d %H:%M:%S"
set xdata time
set autoscale
set ylabel "temperatura °C"
set format x "%H:%M"
set grid x x2 y y2 mx my mx2 my2
set key left
set label "aktualna: ${akt_CO_1h}" at graph 0.4, graph 0.97
set label "maksymalna: ${max_t_CO_1h}" at graph 0.4, graph 0.92
set label "minimalna: ${min_t_CO_1h}" at graph 0.4, graph 0.87
plot '/Meteo/temp/co_zasilanie_1h.txt' using 1:3 t 'dane rzeczywiste' with lines lt 1 lw 2;
quit
__EOF__
##################################
GNUPLOT_COMMAND="/tmp/gnuplot_cmd"
touch ${GNUPLOT_COMMAND}

cat > ${GNUPLOT_COMMAND} << __EOF__

set terminal png small size 800,500
set output '/www1/temp_co_24h.pnd'
set title "Doba"
set xlabel "Godziny"
set timefmt "%Y-%m-%d %H:%M:%S"
set xdata time
set autoscale
set ylabel "temperatura °C"
set format x "%H:%M"
set grid x x2 y y2 mx my mx2 my2
set key left
set label "aktualna: ${akt_CO_24h}" at graph 0.4, graph 0.97
set label "maksymalna: ${max_t_CO_24h}" at graph 0.4, graph 0.92
set label "minimalna: ${min_t_CO_24h}" at graph 0.4, graph 0.87
set key spacing 1.3
plot '/Meteo/temp/co_zasilanie_24h.txt' using 1:3 t 'temp.wody zasilania CO' with lines lt 1 lw 2;
quit
__EOF__
#####################################

GNUPLOT_COMMAND="/tmp/gnuplot_cmd"
touch ${GNUPLOT_COMMAND}

cat > ${GNUPLOT_COMMAND} << __EOF__

set terminal png small size 800,500
set output '/www1/temp_co_7d.pnd'
set title "Tydzien"
set xlabel "Dzien"
set timefmt "%Y-%m-%d %H:%M:%S"
set xdata time
set autoscale
set ylabel "temperatura °C"
set format x "%d\n%H:%M"
set grid x x2 y y2 mx my mx2 my2
set key left
set label "maksymalna: ${max_t_CO_7d}" at graph 0.4, graph 0.97
set label "minimalna: ${min_t_CO_7d}" at graph 0.4, graph 0.92
set key spacing 1.3
set label "aktualna: ${akt_CO_7d}" at graph 0.4, graph 0.97
set label "maksymalna: ${max_t_CO_7d}" at graph 0.4, graph 0.92
set label "minimalna: ${min_t_CO_7d}" at graph 0.4, graph 0.87
plot '/Meteo/temp/co_zasilanie_7d.txt' using 1:3 t 'temp.wody zasilania CO' with lines lt 1 lw 2;

quit
__EOF__

wdr3600
wdr4300

4

Odp: Generowanie wykresów w Gnuplot

Tylko po każdym __EOF__ wykonaj go w gnuplocie.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

5

Odp: Generowanie wykresów w Gnuplot

tzn. rozbić ten jeden skrypt na trzy i uruchamiać każdy osobno? (chodziło mi o to żeby skrypt gnuplota był jeden a nie kilka)

wdr3600
wdr4300

6

Odp: Generowanie wykresów w Gnuplot

Ale w jednym Ci nie działa, sam pisałeś. Co za różnica czy wywołasz gnuplota raz czy dwa? Za dużo czasu spędzasz nad problemem, zrób osobno i idź dalej.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

7 (edytowany przez smtv 2015-02-22 12:43:38)

Odp: Generowanie wykresów w Gnuplot

Cezary z pełnym szacunkiem ale problem w tym że jeżeli mam takich wykresów np. (czujników temp.) kilkadziesiąt to rozbicie każdego na mniejsze generujące wykres godzinowy tygodniowy, miesięczny zaciemni całkowicie przejrzystość. (Inie chodzi tu że mogę np. na jednym wykresie umieścić kilka wykresów)

wdr3600
wdr4300

8

Odp: Generowanie wykresów w Gnuplot

Marudzisz smile Dodaj sobie po prostu gnuplot GNUPLOT_COMMAND po każdym __EOF__ i tyle. I tak coś musisz przerobić bo sam pisałeś że Cie się nakłada.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

9

Odp: Generowanie wykresów w Gnuplot

E tam zaraz marudzisz :-)
Zmieniłem troszkę i działa.
Dziękuje za pomoc. Dla potomnych skrypt:

#!/bin/sh

##### opis dla temp. zasilania CO  ###############

## 1 godz.
min_t_CO_1h=`cut -d' ' -f3 /Meteo/temp/co_zasilanie_1h.txt | sort -n | head -1 `
max_t_CO_1h=`cut -d' ' -f3 /Meteo/temp/co_zasilanie_1h.txt | sort -n | tail -1 `
akt_co=`cut -d' ' -f3 /Meteo/temp/co_zasilanie.txt | tail -1 `

## 24 godz.
min_t_CO_24h=`cut -d' ' -f3 /Meteo/temp/co_zasilanie_24h.txt | sort -n | head -1 `
max_t_CO_24h=`cut -d' ' -f3 /Meteo/temp/co_zasilanie_24h.txt | sort -n | tail -1 `

## 7 dni
min_t_CO_7d=`cut -d' ' -f3 /Meteo/temp/co_zasilanie_7d.txt | sort -n | head -1 `
max_t_CO_7d=`cut -d' ' -f3 /Meteo/temp/co_zasilanie_7d.txt | sort -n | tail -1 `

#####################################################

GNUPLOT_COMMAND="/tmp/gnuplot_cmd"
touch ${GNUPLOT_COMMAND}

cat > ${GNUPLOT_COMMAND} << __EOF__

################ temperatura zasilania CO ########################

set terminal png small size 800,500
set output '/www1/temp_co_1h.pnd'
set title "Ostatnia godzina"
set xlabel "godzina"
set timefmt "%Y-%m-%d %H:%M:%S"
set xdata time
set autoscale
set ylabel "temperatura °C"
set format x "%H:%M"
set grid x x2 y y2 mx my mx2 my2
set label "aktualna: ${akt_co}" at graph 0.4, graph 0.97
set label "maksymalna: ${max_t_CO_1h}" at graph 0.4, graph 0.92
set label "minimalna: ${min_t_CO_1h}" at graph 0.4, graph 0.87
plot '/Meteo/temp/co_zasilanie_1h.txt' using 1:3 t  with lines lt 1 lw 2;

quit


gnuplot ${GNUPLOT_COMMAND}
rm ${GNUPLOT_COMMAND}

GNUPLOT_COMMAND="/tmp/gnuplot_cmd"
touch ${GNUPLOT_COMMAND}

cat > ${GNUPLOT_COMMAND} << __EOF__

set terminal png small size 800,500
set output '/www1/temp_co_24h.pnd'
set title "Doba"
set xlabel "Godziny"
set timefmt "%Y-%m-%d %H:%M:%S"
set xdata time
set autoscale
set ylabel "temperatura °C"
set format x "%H:%M"
set grid x x2 y y2 mx my mx2 my2
set label "maksymalna: ${max_t_CO_24h}" at graph 0.4, graph 0.97
set label "minimalna: ${min_t_CO_24h}" at graph 0.4, graph 0.92
set key spacing 1.3
plot '/Meteo/temp/co_zasilanie_24h.txt' using 1:3 t  with lines lt 1 lw 2;

quit


gnuplot ${GNUPLOT_COMMAND}
rm ${GNUPLOT_COMMAND}

GNUPLOT_COMMAND="/tmp/gnuplot_cmd"
touch ${GNUPLOT_COMMAND}

cat > ${GNUPLOT_COMMAND} << __EOF__


set terminal png small size 800,500
set output '/www1/temp_co_7d.pnd'
set title "Tydzien"
set xlabel "Dzien"
set timefmt "%Y-%m-%d %H:%M:%S"
set xdata time
set autoscale
set ylabel "temperatura °C"
set format x "%d\n%H:%M"
set grid x x2 y y2 mx my mx2 my2
set key spacing 1.3
set label "maksymalna: ${max_t_CO_7d}" at graph 0.5, graph 0.92
set label "minimalna: ${min_t_CO_7d}" at graph 0.5, graph 0.87
plot '/Meteo/temp/co_zasilanie_7d.txt' using 1:3 t  with lines lt 1 lw 2;

quit


gnuplot ${GNUPLOT_COMMAND}
rm ${GNUPLOT_COMMAND}

wdr3600
wdr4300