abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 18:00 | IT novinky

    DuckDuckGo AI Chat umožňuje "pokecat si" s GPT-3.5 Turbo od OpenAI nebo Claude 1.2 Instant od Anthropic. Bez vytváření účtu. Všechny chaty jsou soukromé. DuckDuckGo je neukládá ani nepoužívá k trénování modelů umělé inteligence.

    Ladislav Hagara | Komentářů: 0
    dnes 14:22 | IT novinky

    VASA-1, výzkumný projekt Microsoftu. Na vstupu stačí jediná fotka a zvukový záznam. Na výstupu je dokonalá mluvící nebo zpívající hlava. Prý si technologii nechá jenom pro sebe. Žádné demo, API nebo placená služba. Zatím.

    Ladislav Hagara | Komentářů: 2
    dnes 04:44 | Nová verze

    Nová čísla časopisů od nakladatelství Raspberry Pi: MagPi 140 (pdf) a HackSpace 77 (pdf).

    Ladislav Hagara | Komentářů: 0
    dnes 01:00 | Nová verze

    ESPHome, tj. open source systém umožňující nastavovat zařízení s čipy ESP (i dalšími) pomocí konfiguračních souborů a připojit je do domácí automatizace, například do Home Assistantu, byl vydán ve verzi 2024.4.0.

    Ladislav Hagara | Komentářů: 0
    včera 22:11 | IT novinky Ladislav Hagara | Komentářů: 0
    včera 20:55 | Nová verze

    Neziskové průmyslové konsorcium Khronos Group vydalo verzi 1.1 specifikace OpenXR (Wikipedie), tj. standardu specifikujícího přístup k platformám a zařízením pro XR, tj. platformám a zařízením pro AR (rozšířenou realitu) a VR (virtuální realitu). Do základu se z rozšíření dostalo XR_EXT_local_floor. Společnost Collabora implementuje novou verzi specifikace do platformy Monado, tj. open source implementace OpenXR.

    Ladislav Hagara | Komentářů: 2
    včera 17:22 | Nová verze

    Byla vydána nová verze 0.38.0 multimediálního přehrávače mpv (Wikipedie) vycházejícího z přehrávačů MPlayer a mplayer2. Přehled novinek, změn a oprav na GitHubu. Požadován je FFmpeg 4.4 nebo novější a také libplacebo 6.338.2 nebo novější.

    Ladislav Hagara | Komentářů: 13
    včera 17:11 | Nová verze

    ClamAV (Wikipedie), tj. multiplatformní antivirový engine s otevřeným zdrojovým kódem pro detekci trojských koní, virů, malwaru a dalších škodlivých hrozeb, byl vydán ve verzích 1.3.1, 1.2.3 a 1.0.6. Ve verzi 1.3.1 je mimo jiné řešena bezpečnostní chyba CVE-2024-20380.

    Ladislav Hagara | Komentářů: 2
    včera 12:11 | IT novinky

    Digitální a informační agentura (DIA) oznámila (PDF, X a Facebook), že mobilní aplikace Portál občana je ode dneška oficiálně venku.

    Ladislav Hagara | Komentářů: 10
    včera 05:11 | Komunita

    #HACKUJBRNO 2024, byly zveřejněny výsledky a výstupy hackathonu města Brna nad otevřenými městskými daty, který se konal 13. a 14. dubna 2024.

    Ladislav Hagara | Komentářů: 2
    KDE Plasma 6
     (68%)
     (10%)
     (2%)
     (20%)
    Celkem 564 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    Rozcestník

    Dotaz: Interaktivní vykreslování grafu

    1.7.2016 10:28 28734
    Interaktivní vykreslování grafu
    Přečteno: 554×
    Hodil by se mi námět, jakým způsobem a v jakém jazyce co nejefektivněji vytvořit rozhraní pro interaktivní vykreslování grafů. Moje vize je následující:
    • Mám několik desítek datových sad (např. v různých textových souborech).
    • Potřebuji vyzkoušet, které z nich je nejvhodnější vykreslit do grafu. Musí to rozhodnout člověk, neexistuje způsob, jak to dělat automaticky.
    • Udělat z dat graf v gnuplotu nebo pythonu není problém, komplikací je vyzkoušení různých kombinací zobrazených dat. Není možné hrubou silnou vyzkoušet všechny kombinace, ani není ideální konvergovat k finální grafu tak, že vždy budu ve skriptu měnit kombinace dat a znovu to vykreslovat.
    • Představuji si, že by mohlo jít udělat relativně jednoduché grafické rozhraní, kde v jednom panelu bych měl seznam možných datových řad, v druhém vykreslený graf. Graf by se v aktuálním čase překresloval podle vybraných dat k zobrazení, různé kombinace by tedy šlo vyzkoušet relativně rychle.
    • Ideálně by mohl jít graf interaktivně otáčet (3D).
    • Většinu parametrů grafu bych měnil např. v gnuplot skriptu - jsou to věci, které by se měnily jen málokdy.
    Jde o relativně soukromou věc, nic komerčního a nemusí to být přiliš robusní.

    Máte nějaké tipy, jak toto co nejjednodušeji vytvořit? Uvažoval jsem o perlu, ale nemám zkušenosti, jak v něm dělat GUI. Případně, neexistuje již něco s funkcemi, které popisuji?

    Děkuji předem

    Odpovědi

    1.7.2016 10:46 MadCatX
    Rozbalit Rozbalit vše Re: Interaktivní vykreslování grafu
    Pokud nemáš problém s C++ a Qt, možná bys mohl použít Q3DSurface. Nikdy jsem to nezkoušel, takže nevím, kolik boiler plate kódu bys okolo toho musel napsat. Na čistě 2D grafy je velmi solidní Qtčková knihovna Qwt.
    Jendа avatar 1.7.2016 11:06 Jendа | skóre: 78 | blog: Jenda | JO70FB
    Rozbalit Rozbalit vše Re: Interaktivní vykreslování grafu
    Já jsem lama, takže bych to, co chce tazatel, asi psal v Pythonu a matplotlib/SciPy.
    3.7.2016 11:50 28734
    Rozbalit Rozbalit vše Re: Interaktivní vykreslování grafu
    Pokud by to byla jediná možnost, s C++ problém nemám, ale bojím se, že bych zde musel dopisovat až moc věcí od nuly.
    Jendа avatar 1.7.2016 11:02 Jendа | skóre: 78 | blog: Jenda | JO70FB
    Rozbalit Rozbalit vše Re: Interaktivní vykreslování grafu
    Už pár let zoufale sháním něco, co je schopné prostě vykreslit data, aby v tom šlo browsit a zoomovat, ideálně aplikovat elementární filtry (FIR, integrace, …), ideálně běžet realtime (data chodí ze senzorů furt) a ideálně i třeba kreslit waterfall. Nic takového jsem nenašel.

    Velmi hrubě to aproximuje KST. Má to strašně moc funkcí, ale většinou ne ty, co potřebuju :-), a praštěné ovládání.
    3.7.2016 11:48 28734
    Rozbalit Rozbalit vše Re: Interaktivní vykreslování grafu
    Díky. Nevíš, zda toto umí 3D grafy, v dokumentaci jsem je nenašel.
    1.7.2016 11:09 NN
    Rozbalit Rozbalit vše Re: Interaktivní vykreslování grafu
    3.7.2016 11:46 28734
    Rozbalit Rozbalit vše Re: Interaktivní vykreslování grafu
    Pokud koukám dobře, toto 3D grafy neumí ...
    1.7.2016 11:41 Olaf
    Rozbalit Rozbalit vše Re: Interaktivní vykreslování grafu
    Jelikož takové věci dělám, tak prostě webová appka s klikátky --- Python stack: Django jako web framework, Dajaxice/Dajax pro Ajax + JS knihovna FlotCharts nebo Flot nebo klidně přímo Matplotlib. Dajaxice/Dajax už autor pohřbil, ale udržuje se fork na Githubu (jelikož mám desítky tisíc řádků v tom napsané i já, tak si to udržuju taky).

    Místo Djanga (je-li to pro někoho kanon na vrabce) lze použít i Flask či Bottle a ajaxovou stránku věci napsat přímo.
    3.7.2016 11:53 28734
    Rozbalit Rozbalit vše Re: Interaktivní vykreslování grafu
    Díky, dost možná to tak dopadne. Neměl bys nějaký kód na 3D grafy, o který by ses podělil, ať nemusím začínat od píky? ;)
    3.7.2016 18:05 Olaf
    Rozbalit Rozbalit vše Re: Interaktivní vykreslování grafu
    Příloha:
    Jak říkám, kombinuju JS a Matplotlib. Data naexportuješ jako cvs apod. Matplotlib ale neumí grafy otáčet, takže (a s tím osobní zkušenost nemám) bych zkusil něco z toho, co například používá pythonovský SageMath -- buď nějakou JS knihovnu (mají three.js?) nebo javovský jmol.

    Poslední dobou jede plotly (tím spamují každičké fórum a komunitu na G+, čímž mi lezou neskutečně krkem), což je dost schopná věc s API pro Python, R aj. Jede i v offline modu. Oni totiž chtějí dost peněz za nasazení na servery apod. Když člověk nefunguje v offline modu, chce to po něm jméno a key atd. Ale nějakou dobu se dá plotly nainstalovat přes pip a pak aktivovat offline mod (viz níže). A s těmi grafy se dá otáčet (JS).

    Dejme tomu, že máš soubor s daty, ty nahraješ buď přes numpy, nebo třeba Pandas (což je pythonovský balík pro časové řady atd.). Já udělal csv soubor tak, že jsem do něj vyexportoval hodnoty z definované funkce. No to je fuk, prostě teď přejdeme na vykreslení pomocí plotly v offline režimu v Jupyteru (iPython notebooku).
    import plotly
    from plotly.offline import download_plotlyjs, init_notebook_mode, iplot
    init_notebook_mode()
    
    plotly.offline.init_notebook_mode()
    
    import plotly.graph_objs as go    
    import pandas as pd
    
    z_data = pd.read_csv('data_3d.csv')
    
    data = [
        go.Surface(
            z=z_data.as_matrix()
        )
    ]
    
    layout = go.Layout(
        title='3D graf',
        width=800,
        height=650,
    
    )
    
    fig = go.Figure(data=data, layout=layout)
    iplot(fig, filename='elevations-3d-surface', show_link=False)
    
    Výsledek v příloze. Ovšem konkrétně řešení pro tebe jen tak nenavrhnu. To, co přesně chceš, víš jen ty. :-) Ale vsadil bych na Python stack.
    3.7.2016 18:08 Olaf
    Rozbalit Rozbalit vše Re: Interaktivní vykreslování grafu
    Příloha:
    A tady ještě ten graf pootočený, viz přílohu.
    3.7.2016 18:38 28734
    Rozbalit Rozbalit vše Re: Interaktivní vykreslování grafu
    Pěkná ukázka, konkrétní řešení je samozřejmě na mě, především kvůli struktuře a zpracování dat, toto ale jako ukázka postačuje. Více méně by graf samotný nějak podobně mohl vypadat, ale příliš se mi nelíbí ten jejich online/offline mód. Druhý z nich je lehce složitější než přiložení knihovny, což by mohl být problém na některých strojích, online verze s licencování nepřichází v úvahu. Nebo nevíš, lze plotly nějak přiložit ke skriptu, aby byl nezávislý na stroji, tj. fungoval tam, kde je jen "základní" Python? Možná je to triviální dotaz, ale s knihovnami v Pythonu nemám zkušenosti a na podobný dotaz streja google neodpověděl.
    3.7.2016 19:05 Olaf
    Rozbalit Rozbalit vše Re: Interaktivní vykreslování grafu
    Nevím, jestli rozumím dotazu. Jako přiložit knihovnu do adresáře podobně jako DLL u Win aplikací nebo JS u HTML? To asi ne, to není jeden soubor. :) To ať poradí někdo znalejší. Každý stroj, na kterém se spouští pythonovské kódy, které vyžadují numpy, scipy, matplotlib apod., musejí mít tyto knihovny/balíčky u sebe. Lze třeba udělat "izolované" prostředí, tzv. virtuální prostředí -- virtualenv, kde budou jen potřebné věci (výše jmenované), aniž by zasahovaly do systémového Pythonu. Vytvořím jako virtualenv pyenv, kde pyenv je mnou zvolený název, do něj se přepnu pomocí příkazu source /cesta-k-pyenv/bin/activate a v konzoli mi svítí, že pracuju z tohoto prostředí a všechny py skripty budou spuštěny odtud (což se lze přesvědčit dotazem which python, který vrátí cestu do toho adresáře a ne systémovou). Abych jako ocas nemusel psát celou cestu k virtuálním prostředím, udělal jsem si aliasy v profilu bashe: alias pyenv='source /cesta-k-pyenv/bin/activate'. Takže v konzoli stačí zadat pyenv a jsem tam. Z virtuálního prostředí se ven dostanu zadáním deactivate.

    Virtuální prostředí lze vytvořit i tak, aby vůbec neviděl pythonovské systémové věci a vše řídil jen na základě toho, co má v tom mnou definovaném adresáři. Abych nezapomněl, jakmile jsem v tom virtualenv, potřebné knihovny apod. instaluju normálně jako pip install balíček.

    Jestli chceš ještě větší míru izolace a hlavně přenositelnosti, pak prosím, sáhni po Dockeru. S tím si vyhraješ dosyta.

    3.7.2016 20:53 28734
    Rozbalit Rozbalit vše Re: Interaktivní vykreslování grafu
    Nevím, jestli rozumím dotazu. Jako přiložit knihovnu do adresáře podobně jako DLL u Win aplikací nebo JS u HTML? To asi ne, to není jeden soubor. :)
    Ano, dotaz jsi pochopil. Jdu se tedy učit s pythonem ;)
    3.7.2016 21:13 Olaf
    Rozbalit Rozbalit vše Re: Interaktivní vykreslování grafu
    Když napíšeš, v čem a zda vůbec jsi programoval, na jakém systému to budeš dělat atd., tak se ti pokusím v lecčems pomoci, abys ze začátku moc netápal.
    4.7.2016 07:59 28734
    Rozbalit Rozbalit vše Re: Interaktivní vykreslování grafu
    Vážím si nabídky, ale raději se budu ptát časem na konkrétní věci. Obecných návodů je na internetu mnoho a nepotřebuji plýtvat potenciálem geinálních mozků v tomto fóru :-)
    3.7.2016 18:18 Olaf
    Rozbalit Rozbalit vše Re: Interaktivní vykreslování grafu
    Sorráč, tady je čistější kód, špatně jsem ti to překopíroval z těch ukázek, zůstaly tam zbytečnosti atd.
    from plotly.offline import iplot, init_notebook_mode
    init_notebook_mode()
    
    import plotly.graph_objs as go    
    import pandas as pd
    
    z_data = pd.read_csv('data_3d.csv')
    
    data = [
        go.Surface(
            z=z_data.as_matrix()
        )
    ]
    
    layout = go.Layout(
        title='3D graf',
        width=800,
        height=650,
    )
    
    fig = go.Figure(data=data, layout=layout)
    iplot(fig, show_link=False)
    
    1.7.2016 20:26 Tany
    Rozbalit Rozbalit vše Re: Interaktivní vykreslování grafu
    NVD3 http://nvd3.org/

    3.7.2016 11:43 28734
    Rozbalit Rozbalit vše Re: Interaktivní vykreslování grafu
    Děkuji, toto ale asi neumí 3D grafy
    3.7.2016 23:55 ttt
    Rozbalit Rozbalit vše Re: Interaktivní vykreslování grafu
    d3 3d grafy umí, ale nezkoušel jsem je, nedokážu říct, jak moc je to komplikované. http://bl.ocks.org/supereggbert/aff58196188816576af0
    4.7.2016 01:09 Olaf
    Rozbalit Rozbalit vše Re: Interaktivní vykreslování grafu
    No ale ten kód je bruntální.
    1.7.2016 21:50 ehmmm
    Rozbalit Rozbalit vše Re: Interaktivní vykreslování grafu
    Matlab? Ja vim, ten asi neprojde. Nevim, jestli by tohle umelo i Octave.
    3.7.2016 11:45 28734
    Rozbalit Rozbalit vše Re: Interaktivní vykreslování grafu
    Není důvod, proč by Matlab neprošel. Pokud bych věděl, že v něm výsledku dosáhnu podstatně efektivněji, použiji ho. Nevím ale, jak v něm udělat podobné grafické rozhraní, tak raději sáhnu po něčem univerzálnějším.

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.