Python - Zobrazení online dat

Karmelos

  • *****
  • 1 374
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

  • ****
  • 453
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

Karmelos

  • *****
  • 1 374
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 687
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 »
Citace od: Pajaha kdy 14. 02. 2020, 23:57:58
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

  • ****
  • 453
Re:Python - Zobrazení online dat
« Odpověď #6 kdy: 15. 02. 2020, 18:06:37 »
Citace od: Pajaha 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ší...

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

Karmelos

  • *****
  • 1 374
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 »
Citace od: Pajaha kdy 15. 02. 2020, 21:02:23
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, ...)

Citace od: Pajaha kdy 15. 02. 2020, 21:02:23
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 »
Citace od: Ondrej Nemecek kdy 16. 02. 2020, 15:03:42
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 »
Citace od: Mirek Prýmek kdy 16. 02. 2020, 15:17:37
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 »
Citace od: A.P.Hacker kdy 16. 02. 2020, 16:01:59
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 »
Citace od: Mirek Prýmek kdy 16. 02. 2020, 16:03:53
Citace od: A.P.Hacker kdy 16. 02. 2020, 16:01:59
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 »
Citace od: Pajaha 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...

nemáte nainstalovaný prohlížeč?