Autor |
Sõnum |
erykroom
Pingviini aktivist
Vanus: 38
Liitunud: 06.01.2007
Postitused: 193
Distributsioon: Arch
|
|
Olen natuke hädas gnuploti silumis funktsiooniga. Minu andmed on kahes tulbas, mis on omavahel eraldatud tabidega. Gnuploti plottimine toimib nii nagu see peab aga kahjuks on minu andmetes ka mingil määral müra.
Kood: | plot "foo.csv" using 1:2 with line ls 1 lw 1 title "foo.test" |
Kui ma proovin seda siluda bezier funktsiooniga saan ma tulemuseks ilusa müravaba graafiku, kuid kõik maksimumid ja miinimumid on samuti ümaraks muutunud.
Kood: | plot "foo.csv" using 1:2 smooth bezier ls 2 title "bezier" |
Teine võimalus silumiseks oleks kasutada spline funktsiooni. cspline funktsioon peaks kõik andmepunktid ühendama omavahel sujuvalt. Tulemuseks on midagi veidrat.
Kood: | plot "foo.csv" using 1:2 smooth cspline ls 3 title "csplines" |
Kolmas võimalus oleks kasutada acsplines funktsiooni, mis arvatavsti oleks parim lahendus. Kuid ma ei oska mingit väärtust "weight" parameetrile anda, et graafik mõistlikult silutud saaks. Äkki keegi targem oskab nõu anda, mis ma edasi peaks tegema.
Andmemassiivi
https://dl.dropboxusercontent.com/u/797964/foo.csv
Ja pildid, mis ehk illustreerivad minu probleemi tiba paremini
Originaal ja bezier:
https://dl.dropboxusercontent.com/u/797964/bezier.png
Cspline:
https://dl.dropboxusercontent.com/u/797964/csplines.png
|
|
|
|
|
|
|
|
akbgf
Vana Pingviin
Liitunud: 07.10.2009
Postitused: 763
Asukoht: Tõravere
Distributsioon: OpenSUSE, Ubuntu
|
|
erykroom kirjutas: | Olen natuke hädas gnuploti silumis funktsiooniga.
|
Kasutan Gnuplot-i väga palju, aga niisuguse probleemi lahendaksin Gnuploti-väliselt.
Võibolla aitaks Gnuplotis andmefaili jupiti käsitlemine,
vt. help plot every
ja kasuta erinevatel juppidel erinevat silumist.
|
|
|
|
|
|
|
|
erykroom
Pingviini aktivist
Vanus: 38
Liitunud: 06.01.2007
Postitused: 193
Distributsioon: Arch
|
|
Eks ma pean mingi muu programmiga selle silumise tegema.
Minu esialgne plaan oli kõik oma andmed ühes lihtsas skriptis gnuploti saata, mis plotiks mulle ilusad graafikud. Kuna minu andmete maht on üsna suur siis tahtsin vältida igasuguseid lisaliigutusi, muude programmidega. Aga eks ma proovin midagi välja mõelda.
|
|
|
|
|
|
|
|
ertserts
Vana Pingviin
Liitunud: 31.10.2013
Postitused: 445
Asukoht: Tallinn
Distributsioon: Ubuntu, Debian
|
|
Ma pole ise kunagi Gnupolt tarkvaraga kokku puutunud.
Vaatasin antud asja lihtsalt huvipärast.
Samas miks mitte kasutada gnupolt'is järgnevaid funktsioone?
Cumulative:
gnuplot> plot "foo.csv" using 1:2 smooth cumulative ls 3 title "cumulative"
või
Cnormal:
gnuplot> plot "foo.csv" using 1:2 smooth cnormal ls 3 title "cnormal"
või
Kdensity:
gnuplot> plot "foo.csv" using 1:2 smooth kdensity ls 3 title "kdensity"
või
Sbezier:
gnuplot> plot "foo.csv" using 1:2 smooth sbezier ls 3 title "sbezier"
Acsplines:
gnuplot> plot "foo.csv" using 1:2 smooth acsplines ls 3 title "acsplines"
Annab veateate:"Can't calculate approximation splines, all weights have to be > 0" Siin peaks asja nats kaevama ja katsetama.
Silmale loetavad graafikud!
|
|
|
|
_________________ ertserts@linuxialune:~$ echo;echo Local and Remote IP connections:;netstat -at|sort -k5|grep ESTABLISHED|cut -c20-80;echo
|
|
|
|
erykroom
Pingviini aktivist
Vanus: 38
Liitunud: 06.01.2007
Postitused: 193
Distributsioon: Arch
|
|
Tsitaat: | Acsplines:
gnuplot> plot "foo.csv" using 1:2 smooth acsplines ls 3 title "acsplines"
Annab veateate:"Can't calculate approximation splines, all weights have to be > 0" Siin peaks asja nats kaevama ja katsetama. |
Acsplines vajab ka kolmandat parameetrit, mis näitab splines funktsioonile, mis väärtust/kaalu peab vastav silumine omama. Või midagi selle sarnast. Matemaatikud saavad sellest kindlasti paremini aru, kui mina
|
|
|
|
|
|
|
|
akbgf
Vana Pingviin
Liitunud: 07.10.2009
Postitused: 763
Asukoht: Tõravere
Distributsioon: OpenSUSE, Ubuntu
|
|
ertserts kirjutas: |
Sbezier:
gnuplot> plot "foo.csv" using 1:2 smooth sbezier ls 3 title "sbezier"
|
Näiteks:
gnuplot> plot 'foo.csv' u 1:2 every ::::550 ti 'Bezier 1..550' smooth bezier, '' u 1:2 every ::550::1550 ti 'Bezier 550..1550' smooth bezier, '' u 1:2 every ::1550 ti 'Bezier 1551..' smooth bezier
Jätsin erinevad joonetüübid, et näeksid, kuidas ükski jupp välja näeb.
Ka ei vaevunud liiga hoolikalt kontrollima, kas jätkamise kohad on õiged.
> Minu esialgne plaan oli kõik oma andmed ühes lihtsas skriptis gnuploti saata,
> mis plotiks mulle ilusad graafikud.
> Kuna minu andmete maht on üsna suur siis tahtsin vältida igasuguseid lisaliigutusi,
> muude programmidega.
Gnuplotis saad välja kutsuda programmi, mis tekitab/muudab plot-käsu algandmeid:
gnuplot> !./sinu_programm
gnuplot> plot ....
|
|
|
|
|
|
|
|
erykroom
Pingviini aktivist
Vanus: 38
Liitunud: 06.01.2007
Postitused: 193
Distributsioon: Arch
|
|
akbgf kirjutas: |
gnuplot> plot 'foo.csv' u 1:2 every ::::550 ti 'Bezier 1..550' smooth bezier, '' u 1:2 every ::550::1550 ti 'Bezier 550..1550' smooth bezier, '' u 1:2 every ::1550 ti 'Bezier 1551..' smooth bezier
. |
Hakkab juba ideaali lähedale jõudma. Erinevatelt osadelt veel key-d eemaldada ja joone stiilid samaks siis peaks täitsa tip top olema.
Igaks juhuks ka natuke lisainformatsiooni kuidas ma gnuploti kasutan. Võimalik, et see on kasulik mõnele kasutajale.
Tegin ~/.gnuplot katoloogi, kuhu lisasin export.gp faili. (Sinna võib kõik oma vajalikud gnuplot failid, skriptid lisada.) Aga export.gp faili sisuks on:
Kood: |
save "$0.gp" #Salvestab kogu info, mis andmetega tehti $0.gp faili
set t push #Salvestab kasutatud terminali sätted
set t postscript eps enhanced color font "Helvetica" #Muudab terminali postscrip epsiks
set o "$0.eps" #Annab salvestatud failile nime
replot #joonistab graafiku
set o #taastab "interactive" terminali
set t pop #Taastab eelnevad sätted, mis said pushitud
|
Lisasin oma .zshrc või .bashrc faili rea:
Kood: |
export GNUPLOT_LIB=~/.gnuplot
|
Nüüd iga kord, kui olen oma graafiku valmis saanud käivitan gnuplotis export.gp, mis salvestab minu graafiku .eps formaadis ja lisab ka faili, kus on kirjas kõik, mis ma antud graafikuga tegin.
Kood: |
gnuplot> call "export.gp" "failinimi"
|
|
|
|
|
|
|
|
|
akbgf
Vana Pingviin
Liitunud: 07.10.2009
Postitused: 763
Asukoht: Tõravere
Distributsioon: OpenSUSE, Ubuntu
|
|
erykroom kirjutas: | Hakkab juba ideaali lähedale jõudma. Erinevatelt osadelt veel key-d eemaldada ja joone stiilid samaks siis peaks täitsa tip top olema.
|
Kui joone tuletise katkemise kohad püsivad paigal, siis saad osalõigud täpselt valida graafikul
gnuplot> plot 'foo.csv' u 2 w l
või plot '..' u 0:2 w l
Soovitud koha saab suurendada plot-käsu vahemikke andes, aga ka suureks zoomides graafiku aknas hiire parema klahviga piirkonda vedades.
> Igaks juhuks ka natuke lisainformatsiooni kuidas ma gnuploti kasutan.
> Võimalik, et see on kasulik mõnele kasutajale
Mina salvestan gnuplotis save-käsuga: save 'ilus_pilt.plot'.
Uuesti vaja minnes saab laadida: load 'ilus_pilt.plot'.
Plot-fail on tekstifail, mida saab vastavalt vajadusele uurida, muuta, võtta osi mujal kasutamiseks, teha tsükleid jne.
|
|
|
|
|
|
|
|
|