Portaal Portaal Pingviini veeb foorumi pealeht
  Viki  |  IRC  |  Otsing  |  Küsimused ja vastused  |  Profiil  |  Privaatsõnumite vaatamiseks logi sisse  | Logi sisse või Registreeru
<empty>
Vaata järgmist teemat
Vaata eelmist teemat

Postita uus teemaVasta teemale
Autor Sõnum
erykroom
Pingviini aktivist
Pingviini aktivist


Vanus: 38
Liitunud: 06.01.2007
Postitused: 193

Distributsioon: Arch
estonia.gif
postituspostitatud: 03.11.2014, 05:55  postituse pealkiri:  Gnuplot smooth funktsioon  

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
Vana Pingviin



Liitunud: 07.10.2009
Postitused: 763
Asukoht: Tõravere
Distributsioon: OpenSUSE, Ubuntu
estonia.gif
postituspostitatud: 03.11.2014, 13:08  postituse pealkiri:  Re: Gnuplot smooth funktsioon  

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
Pingviini aktivist


Vanus: 38
Liitunud: 06.01.2007
Postitused: 193

Distributsioon: Arch
estonia.gif
postituspostitatud: 03.11.2014, 23:26  postituse pealkiri:  (teema puudub)  

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
Vana Pingviin



Liitunud: 31.10.2013
Postitused: 445
Asukoht: Tallinn
Distributsioon: Ubuntu, Debian
estonia.gif
postituspostitatud: 04.11.2014, 02:33  postituse pealkiri:  (teema puudub)  

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! Smile

_________________
ertserts@linuxialune:~$ echo;echo Local and Remote IP connections:;netstat -at|sort -k5|grep ESTABLISHED|cut -c20-80;echo

erykroom
Pingviini aktivist
Pingviini aktivist


Vanus: 38
Liitunud: 06.01.2007
Postitused: 193

Distributsioon: Arch
estonia.gif
postituspostitatud: 04.11.2014, 05:11  postituse pealkiri:  (teema puudub)  

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
Vana Pingviin



Liitunud: 07.10.2009
Postitused: 763
Asukoht: Tõravere
Distributsioon: OpenSUSE, Ubuntu
estonia.gif
postituspostitatud: 04.11.2014, 09:29  postituse pealkiri:  (teema puudub)  

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
Pingviini aktivist


Vanus: 38
Liitunud: 06.01.2007
Postitused: 193

Distributsioon: Arch
estonia.gif
postituspostitatud: 05.11.2014, 04:31  postituse pealkiri:  (teema puudub)  

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
Vana Pingviin



Liitunud: 07.10.2009
Postitused: 763
Asukoht: Tõravere
Distributsioon: OpenSUSE, Ubuntu
estonia.gif
postituspostitatud: 05.11.2014, 09:02  postituse pealkiri:  (teema puudub)  

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.


Näita (aja järgi):      
Postita uus teemaVasta teemale


Vaata järgmist teemat
Vaata eelmist teemat
Powered by phpBB2 Plus based on phpBB © 2001/7 phpBB Group