Python - Zobrazení online dat

Python - Zobrazení online dat
« kdy: 14. 02. 2020, 16:16:56 »
Jako nepříliš zběhlý v Pythonu bych rád požádal zkušenější o radu.

Chtěl bych si udělat vlastní zobrazení dat z csv souboru, do kterého periodicky (v proměnném intervalu 1 - 30s) zapisuje proprietální aplikace získaná data (teploty, pozice, stavy, atp., asi 500 hodnot/řádek) s časovou značkou.

Vyčítání několika posledních řádků souboru, filtraci vybraných hodnot (cca 50) myslím zvládnu. Potíž mám s následným grafickým výstupem. Chtěl bych ideálně výstup do okna, cca posledních 1000 řádků hodnot, přepisovaných co 5s.

Jako řešení mne napadlo použít prosté vykreslování grafu (matplotlib) a každých 5s těch 50k hodnot prostě vykreslit - graf překreslit. Asi to fungovat nějak bude.

Ale zajímá mne, zda neexistuje nějaké jiné, elegantnější řešení.
 
Jakou knihovnu nebo grafický toolbox byste mi doporučili použít?

Díky...
Gréta je nejlepší.


qelurg

  • ****
  • 372
    • Zobrazit profil
    • E-mail
Re:Python - Zobrazení online dat
« Odpověď #1 kdy: 14. 02. 2020, 17:32:02 »
Výstup bych vedl do webového prohlížeče, buď přes websocket přímo do ručně dělaného svg a mit to trochu pracněji a plně pod kontrolou a nebo použít Flexx, viz https://flexx.readthedocs.io/en/stable/examples/sine_src.html

Re:Python - Zobrazení online dat
« Odpověď #2 kdy: 14. 02. 2020, 23:57:58 »
Děkuji za odpověď. Ten Flex vypadá zajímavě.
Ale kvůli grafu pouštět prohlížeč mi přijde naprosto ujeté.  Tenhle trend se mi vůbec nelíbí.
Dokonce i pro budoucí alternativu, kdy bych třeba data tahal po síti ze SQL serveru, mi přijde nativní aplikace čistší...
Gréta je nejlepší.

_Jenda

  • *****
  • 1 550
    • Zobrazit profil
    • https://jenda.hrach.eu/
    • E-mail
Re:Python - Zobrazení online dat
« Odpověď #3 kdy: 15. 02. 2020, 00:34:00 »
matplotlib má interaktivní režim, je to snadno použitelné: plt.ion(); while True: plt.clf(); plt.plot(nová_data); plt.pause(0.01)

Bohužel je matplotlib podivně pomalý, ale jednou za pár sekund to bude v pohodě.

Další možnost je použít třeba pygame a kreslit si to ručně z grafických primitiv. Výhoda je, že to je přiměřeně akcelerované.

Nebo tu aplikaci udělat v Glade (a tím rovnou získat tlačítka a další věci) a kreslit to ručně do pixbuf.

Re:Python - Zobrazení online dat
« Odpověď #4 kdy: 15. 02. 2020, 11:36:28 »
Dokonce i pro budoucí alternativu, kdy bych třeba data tahal po síti ze SQL serveru, mi přijde nativní aplikace čistší...
Nativní aplikace je pracnější, hůř se upravuje a rychleji narazíš na limity. Webovou aplikaci si spustíš kdekoli, třeba v telefonu, na tabletu a můžeš ji bez jakékoliv práce mít spuštěnou na x zařízeních naráz. Pokud webařinu alespoň trochu znáš a použiješ osvědčené kombo (třeba websockety, Vue.js a třeba D3), budeš to mít za půl dne hotový a rozšiřitelnost bude prakticky nekonečná (po websocketech můžeš posílat cokoli, ve Vue uděláš cokoli).


Re:Python - Zobrazení online dat
« Odpověď #5 kdy: 15. 02. 2020, 16:45:22 »
taky se primlouvam za browser a
https://pydata.org/project/bokeh/

qelurg

  • ****
  • 372
    • Zobrazit profil
    • E-mail
Re:Python - Zobrazení online dat
« Odpověď #6 kdy: 15. 02. 2020, 18:06:37 »
Děkuji za odpověď. Ten Flex vypadá zajímavě.
Ale kvůli grafu pouštět prohlížeč mi přijde naprosto ujeté.  Tenhle trend se mi vůbec nelíbí.
Dokonce i pro budoucí alternativu, kdy bych třeba data tahal po síti ze SQL serveru, mi přijde nativní aplikace čistší...

 Neni to ujete, je to velmi pohodlne a flexibilni. Prohlizec se stava univerzalni platformou pro ui, doporucuju si na to zvyknout.

Re:Python - Zobrazení online dat
« Odpověď #7 kdy: 15. 02. 2020, 21:02:23 »
Já si na to nezvyknu, mě se to nelíbí.  Až "poskytovatel" změní engine, můžu si ten program nejspíš namazat na chleba.
A taky proč kvůli relativně jednoduché desktopové aplikaci na pár desítek řádků (možná několik stovek), instalovat stomegabajtového molocha, který sám o sobě žere gigabajty paměti.
Ale nešť, pokud nepůjde jinak, třeba to z lenosti prošťouchnu...
Nejprve však zkusím ten matplotlib...
Gréta je nejlepší.

Re:Python - Zobrazení online dat
« Odpověď #8 kdy: 16. 02. 2020, 14:33:04 »
Až "poskytovatel" změní engine, můžu si ten program nejspíš namazat na chleba.
Nevím, jakého poskytovatele čeho myslíš, ale kompatibilita s browsery bude spíš lepší lež u nativní aplikace. Tam budeš v dlouhodobém horizontu narážet víc (změna knihoven, změna API, ...)

A taky proč kvůli relativně jednoduché desktopové aplikaci na pár desítek řádků (možná několik stovek), instalovat stomegabajtového molocha, který sám o sobě žere gigabajty paměti.
No on ten Python + potřebné knihovny taky nebude mít 10kB, žejo :) Navíc ty stomegabajty má ta vývojová platforma. Výsledná aplikace, bude mít třeba čtvrt mega.

Žádné gigabajty paměti to nežere.

Re:Python - Zobrazení online dat
« Odpověď #9 kdy: 16. 02. 2020, 15:03:42 »
Přemlouvat k použití browseru je IMHO nesmysl, desktopová aplikace může fungovat srovnatelně a serverová aplikace zase přináší jinou úroveň komplexity (musí někde běžet server atd). Použitelných příkladů na "real time plot python" najdete na google desítky včetně tutoriálů zaměřených na speciálně na toto téma...

Re:Python - Zobrazení online dat
« Odpověď #10 kdy: 16. 02. 2020, 15:17:37 »
Přemlouvat k použití browseru je IMHO nesmysl
Nejde o přemlouvání, ale o sdělení názoru, že tímhle směrem jde trend. A není to náhoda - webové technologie za posledních deset let udělaly obrovský skok kupředu.

Podívej se třeba SyncThing. Udělali špatně, že mají jenom webové rozhraní k desktopové aplikaci? Já myslím, že vůbec ne, naopak, udělal bych to (dneska) stejně.

Re:Python - Zobrazení online dat
« Odpověď #11 kdy: 16. 02. 2020, 16:01:59 »
webové technologie za posledních deset let udělaly obrovský skok kupředu.

aplikace na zobrazení dat byly přesně use case pro web od jeho vzniku. Dnes webové technologie ty čistě desktopové dávno překonaly.

Re:Python - Zobrazení online dat
« Odpověď #12 kdy: 16. 02. 2020, 16:03:53 »
aplikace na zobrazení dat byly přesně use case pro web od jeho vzniku.
Ďábel je v tom slově "data". "HTTP" znamená Hypertext Transfer Protocol :)

Re:Python - Zobrazení online dat
« Odpověď #13 kdy: 16. 02. 2020, 16:07:02 »
aplikace na zobrazení dat byly přesně use case pro web od jeho vzniku.
Ďábel je v tom slově "data". "HTTP" znamená Hypertext Transfer Protocol :)

tabulky jsou v HTML od první poloviny 90tých let

Re:Python - Zobrazení online dat
« Odpověď #14 kdy: 16. 02. 2020, 16:13:01 »
Já si na to nezvyknu, mě se to nelíbí.  Až "poskytovatel" změní engine, můžu si ten program nejspíš namazat na chleba.
A taky proč kvůli relativně jednoduché desktopové aplikaci na pár desítek řádků (možná několik stovek), instalovat stomegabajtového molocha, který sám o sobě žere gigabajty paměti.
Ale nešť, pokud nepůjde jinak, třeba to z lenosti prošťouchnu...
Nejprve však zkusím ten matplotlib...

nemáte nainstalovaný prohlížeč?