BI

Ako vytvoriť interaktívny dashboard v R pomocou Quarto 150 150 cleandata

Ako vytvoriť interaktívny dashboard v R pomocou Quarto

V tomto blogu vám predstavím Quarto ako moderný nástroj na tvorbu interaktívnych dashboardov. Porovnám ho s alternatívami ako Shiny, Power BI a Tableau, ukážem jeho výhody, obmedzenia a možnosti prispôsobenia pomocou HTML, CSS a JavaScript. Ak hľadáte efektívny spôsob, ako prezentovať svoje dáta, tento blog je pre vás.

interactive_dashboard_quarto

Ak ste čítali niektoré z mojich predchádzajúcich článkov, napríklad Vývoj Shiny aplikácie na optimalizáciu trás alebo Vývoj a nasadenie Shiny aplikácií v jazyku R, viete, že Shiny je jedným z najpopulárnejších nástrojov na tvorbu interaktívnych aplikácií v R.

Aj keď je Shiny veľmi výkonný, jeho učiaca krivka môže byť strmá a nasadzovanie aplikácií vyžaduje server. Preto, ak nepotrebujete príliš komplexné riešenia, stojí za to zvážiť Quarto, ktoré ponúka jednoduchší spôsob tvorby interaktívnych dashboardov priamo v prehliadači.

Čo je Quarto?

Quarto je moderný nástroj na tvorbu reportov, dokumentov, a dashboardov priamo v R. Umožňuje kombinovať text, kód a interaktívne prvky do jedného elegantného výstupu. V porovnaní so Shiny je zdieľanie a nasadzovanie výrazne jednoduchšie, najmä cez služby ako GitHub Pages.

Quarto je v podstate nástupcom RMarkdown. Ak ste už v minulosti pracovali s RMarkdown, Quarto vám bude veľmi známe. Ponúka však širší záber – umožňuje nielen vytváranie reportov a dokumentov, ale aj plne interaktívnych dashboardov, webových stránok, či rôznych formátov prezentácií. Quarto prináša väčšiu flexibilitu a rozšírenú podporu rôznych programovacích jazykov, ako sú R, Python, Julia a ďalšie, čím sa stáva univerzálnejším nástrojom pre moderné dátové analýzy a vizualizácie.

Jednou z veľkých výhod Quarto je podpora HTML, CSS a JavaScript, vďaka čomu máte veľkú flexibilitu v prispôsobovaní dizajnu a funkcií svojho dashboardu. To umožňuje vytvárať profesionálne riešenia, ktoré presne zodpovedajú vašim potrebám.

Vytváranie interaktívnych prvkov v Quarto

Aj keď Quarto podporuje hlavne statické dashboardy, existujú spôsoby, ako do nich pridať interaktivitu:

1. Runtime: Shiny

Ak je potrebná pokročilá interaktivita, Quarto umožňuje používať runtime: shiny, čo znamená, že všetky výhody Shiny aplikácií môžete integrovať priamo do Quarto dashboardu. Avšak nasadzovanie si vyžaduje server, čo môže byť pre niektorých používateľov obmedzujúce.

2. Crosstalk – Jednoduchá interaktivita

Pre menej náročné prípady môžete využiť knižnicu Crosstalk. Tá umožňuje synchronizáciu interaktívnych komponentov, ako napríklad:

  • DT: dynamické tabuľky
  • Plotly: interaktívne grafy
  • Leaflet: mapové vizualizácie

Jednou z hlavných výhod je, že Crosstalk a knižnice, ako summarywidget fungujú priamo v prehliadači pomocou JavaScriptu, čo znamená, že zmeny vo filtroch a interakciách sú extrémne rýchle. Všetko sa vykresľuje priamo na strane klienta (v prehliadači), takže nie je potrebné odosielať dáta na server. To zaručuje plynulé a responzívne ovládanie.

Deployment je navyše jednoduchý, pretože nevyžaduje server. Stačí dashboard publikovať, napríklad cez GitHub Pages, čím sa výrazne zjednoduší jeho zdieľanie.

KPI karty a knižnica summarywidget

Ak potrebujete do dashboardu zahrnúť KPI karty (tzv. valueboxy), Crosstalk vás v tomto smere obmedzuje. Pre tento účel odporúčam knižnicu summarywidget, ktorá umožňuje zobrazovať základné štatistiky v prehľadnej forme.

Zistil som však, že pôvodná knižnica summarywidget má obmedzenú funkcionalitu, preto som ju upravil a rozšíril o viac možností formátovania a štatistík. Upravenú verziu si môžete nainštalovať pomocou:

devtools::install_github("Arnold-Kakas/summarywidget")

Rovnako ako Crosstalk, aj summarywidget využíva JavaScript, čo zaručuje veľmi rýchle vykresľovanie a responzívnosť priamo v prehliadači.

Porovnanie: Quarto vs. Shiny

Funkcia Quarto Shiny
Rýchlosť vykresľovania Pri jednoduchých interakciách (Crosstalk, Plotly) veľmi rýchle, pri runtime: shiny porovnateľné so Shiny. Pri všetkých interakciách sa spolieha na server, môže byť pomalšie pri veľkej záťaži.
Možnosti formátovania Flexibilné – umožňuje použitie JS, CSS a HTML. Flexibilné – umožňuje použitie JS, CSS a HTML.
Nasadzovanie a zdieľanie Možnosť nasadiť ako statickú stránku (bez servera) alebo interaktívnu aplikáciu cez runtime: shiny, ktorá vyžaduje server. Vyžaduje server (napr. Shiny Server, RStudio Connect, AWS, GCP…) pre interaktivitu a zdieľanie.
Interaktivita Interaktivita pomocou Crosstalk (plotly, DT, leaflet) alebo OJS. Pri runtime: shiny plne podporuje Shiny interaktivitu. Bohatá podpora interaktivity s plným využitím serverovej logiky a reaktívnych komponentov.
Podpora pre komplexné prepojenia Obmedzené na možnosti Shiny v prípade runtime: shiny, pri Crosstalk obmedzené len na synchronizáciu filtrov. Veľmi silná – umožňuje zložité interakcie a prepojenia medzi komponentmi prostredníctvom reaktivity.
Cena Bezplatné (open-source). Bezplatné (open-source), ale prevádzka na serveroch môže byť nákladná.

Hlavné výhody Quarto:

  • Jednoduché zdieľanie: Deployment je jednoduchý. Stačí publikovať dashboard, napríklad cez GitHub Pages.
  • Rýchlosť a responzívnosť: Vďaka využívaniu JavaScriptu sú zmeny vo filtroch a interakciách extrémne rýchle, pretože všetko beží na strane klienta (v prehliadači).
  • Nízka zložitosť: Na rozdiel od Shiny, nepotrebujete server, ak využívate Crosstalk.

Obmedzenia:

  • Obmedzená interaktivita: Quarto nemá také široké možnosti interakcie ako Shiny.
  • Menej rozvinutý ekosystém: Niektoré knižnice (napríklad summarywidget) si vyžadujú úpravy na mieru.

Porovnanie: Quarto vs. Power BI

Funkcia Quarto Power BI
Rýchlosť vykresľovania Pri jednoduchých interakciách (Crosstalk, Plotly) veľmi rýchle, pri runtime: shiny porovnateľné so Shiny. Môže byť pomalšie pri práci s veľkými datasetmi, najmä pri komplexných vizualizáciách alebo DAX metrikách.
Možnosti formátovania Veľké možnosti prispôsobenia pomocou CSS a HTML. Obmedzené na rozhranie Power BI, úpravy formátovania sú menej flexibilné.
Nasadzovanie a zdieľanie Možnosť nasadiť ako statickú stránku (bez servera) alebo interaktívnu aplikáciu cez runtime: shiny, ktorá vyžaduje server. Nasadzovanie vyžaduje Power BI službu.
Interaktivita Interaktivita pomocou Crosstalk (plotly, DT, leaflet) alebo OJS. Pri runtime: shiny plne podporuje Shiny interaktivitu. Široká podpora interaktivity a natívnych vizualizácií.
Podpora pre komplexné prepojenia Obmedzené na Crosstalk a OJS alebo runtime: shiny. Veľmi silné – umožňuje prepojenie viacerých zdrojov údajov a vizualizácií.
Cena Bezplatné (open-source). Licencia vyžaduje predplatné.

Hlavné výhody Quarto:

  • Rýchlosť vykresľovania a responzívnosť: Quarto dashboardy, ktoré využívajú JavaScript (Crosstalk, summarywidget), fungujú priamo v prehliadači. Všetky zmeny vo filtroch alebo interaktívnych prvkoch sú extrémne rýchle, pretože prebiehajú na strane klienta.
  • Flexibilita formátovania: Quarto ponúka obrovské možnosti prispôsobenia dizajnu pomocou CSS a HTML, čo umožňuje vytvoriť úplne na mieru prispôsobené dashboardy, ktoré presne zodpovedajú vašim požiadavkám.
  • Jednoduchosť nasadzovania a zdieľania: Dashboardy vytvorené v Quarto je možné nasadiť ako statické stránky, napríklad na GitHub Pages. Nepotrebujete žiadne dodatočné servery ani licencie, čo šetrí čas aj financie.
  • Open-source riešenie: Na rozdiel od Power BI, ktoré vyžaduje platenú licenciu na plnohodnotné využitie, Quarto je úplne bezplatné a otvorené riešenie.

Obmedzenia:

  • Komplexné vizualizácie: Power BI umožňuje dynamicky zobrazovať dáta v interaktívnych vizualizáciách. Quarto je v tomto smere obmedzené, pretože jeho interaktívne funkcie (Crosstalk) fungujú iba v rámci podporovaných knižníc, ako sú DT, plotly alebo leaflet. Prípadne vyžadujú znalosť OJS. Pre komplexné vizualizácie je nutný runtime: shiny.

  • Použitie na profesionálne účely: Power BI je skôr považované za alternatívu k Shiny, a to najmä vďaka schopnosti spracovať veľké objemy dát z rôznych zdrojov. Quarto je vhodnejšie pre rýchlejšiu a menej komplexnú prezentáciu dát.

Porovnaním týchto dvoch nástrojov je zrejmé, že Quarto a Power BI majú rozličný use case. Quarto je ideálne na rýchlu tvorbu interaktívnych dashboardov a reportov, kde nie sú potrebné zložité transformácie dát alebo prepojenia medzi rôznymi zdrojmi údajov. Je vhodné pre používateľov, ktorí už spracovali dáta v R a chcú ich elegantne prezentovať. Power BI je naopak silným nástrojom na spracovanie dát a tvorbu robustných dashboardov s prepojením na rôzne zdroje údajov. Vďaka svojim analytickým schopnostiam a integrácii je často preferované pre profesionálne a podnikové riešenia.

Ak hľadáte nástroj na tvorbu dashboardov, rozhodnutie medzi Quarto a Power BI bude závisieť od konkrétnych potrieb. Zvážte rýchlosť, možnosti formátovania, spôsob spracovania dát a celkovú komplexitu riešenia, aby ste si vybrali ten najvhodnejší nástroj.

Príklad: Quarto Dashboard

Ak chcete vidieť Quarto dashboard v praxi, pozrite si môj interaktívny projekt:
Quarto Customers Dashboard.

Zdrojový kód je dostupný na GitHube:
GitHub repo.

Záver

Quarto a Shiny majú každý svoj ideálny spôsob použitia. Ak potrebujete plnú silu reaktivity, komplexné spracovanie dát a interakcie, Shiny je lepšia voľba. Na druhej strane, ak hľadáte elegantné a efektívne riešenie na tvorbu interaktívnych dashboardov bez zbytočnej zložitosti alebo využívať výhody jednoduchšieho nasadzovania, Quarto je skvelou alternatívou k Shiny. Je rýchle, jednoducho sa zdieľa a nevyžaduje server – vyskúšajte ho a uvidíte, ako jednoducho môžete prezentovať svoje dáta!

Popri Quarto a Shiny však existujú aj ďalšie alternatívy, ako napríklad Power BI a Tableau. Tieto nástroje sú obzvlášť vhodné pre profesionálne prostredia, kde je potrebné rýchlo vytvárať vizualizácie a analyzovať dáta z rôznych zdrojov bez nutnosti programovania.

  • Power BI: Silné analytické nástroje a jednoduché nasadzovanie, ale menej flexibilné možnosti formátovania.
  • Tableau: Vynikajúce vizualizačné možnosti a užívateľsky prívetivé prostredie, avšak nákladné a s obmedzenou podporou pokročilého programovania.

Flexibilita úprav pomocou HTML, CSS a JavaScript dáva Quarto náskok v možnostiach prispôsobenia dizajnu a funkčnosti oproti Power BI a podobným nástrojom. Preto si pri výbere nástroja premyslite, aké sú vaše požiadavky na interaktivitu, nasadzovanie a dizajn, aby ste si zvolili ten najvhodnejší nástroj pre váš projekt.

Efektívne vizualizácie dát pomocou Gestalt princípov 150 150 cleandata

Efektívne vizualizácie dát pomocou Gestalt princípov

Gestalt princípy zohrávajú kľúčovú úlohu pri tvorbe zrozumiteľných vizualizácií dát. Tento článok skúma, ako tieto princípy pomáhajú organizovať vizuálne prvky tak, aby efektívne komunikovali informácie a minimalizovali kognitívne zaťaženie užívateľa. Prostredníctvom príkladov v R je ukázané, ako správna aplikácia týchto princípov zvyšuje čitateľnosť a prehľadnosť grafov, čo vedie k lepšiemu porozumeniu prezentovaných dát.

gestalt-principles

Úvod

Gestalt princípy sú základné pravidlá, ktoré vysvetľujú, ako ľudia vnímajú vizuálne elementy ako celok. Svoj pôvod majú v Gestalt (celostnej) psychológii zo začiatku 20. storočia. Základnú myšlienku vyslovil Kurt Koffka: “The whole is something else than the sum of its parts”, čiže celok je niečo iné, ako suma jeho častí. Tieto princípy sú kľúčové pri tvorbe efektívnych a zrozumiteľných vizualizácií dát (čiže takých, ktoré jasne komunikujú, čo je “signál” v našich dátach). Dobrá vizualizácia je vytváraná ako celok. Jej jednotlivé časti meníme takým spôsobom, aby tento celok jasne komunikoval hlavnú myšlienku a nevytváral zbytočne veľké kognitívne zaťaženie užívateľa. V tomto článku sa pozrieme na 6 všeobecne rozoznávaných Gestalt princípov a ukážeme si, ako ich aplikovať pri vizualizácii dát pomocou R.

Princíp blízkosti (proximity)

Objekty, ktoré sú blízko pri sebe máme tendenciu považovať za časť jednej skupiny.

Gestalt princíp blízkosti

V BI tento princíp môžeme využiť napr.v dizajne reportov. Aj tak jednoduchý element ako medzera medzi vizuálmi dokáže jednoducho sprehľadniť celý report. Oblasť filtrov, KPI kariet, grafov alebo tabuliek nepotrebujú špeciálne orámovanie. Stačí ich rozumne vzdialiť od seba a efekt je rovnaký a navyše čistejší.

Princíp podobnosti (similarity)

Objekty, ktoré maju podobný tvar, farbu alebo veľkosť sú vnímané ako jedna skupina. Tento princíp využíva napr. PowerBI v základnom dizajne tabuliek. V nich sa farba pozadia riadkov striedavo mení medzi bielou a sivou, čo pomáha čítať riadky, najmä ak je tabuľka široká. Typicky tento princíp využívame pri porovnávaní rôznych kategórií, ktorým priraďujeme rôznu farbu.

Gestalt princíp podobnosti

Princíp oblasti/ohraničenia (enclosure)

Objekty, ktoré sú spoločne uzavreté, považujeme za súčasť jednej skupiny. Uzavretie nemusí byť výrazné, aby sme dokázali využiť tento princíp. Vďaka tomuto princípu môžeme upriamiť pozornosť na tú časť dát, ktorú považujeme za najdôležitejšiu.

Gestalt princíp ohraničenia

Princíp uzavretosti (closure)

Tento princíp asi najlepšie vystihuje citát z úvodu: “The whole is something else than the sum of its parts”. Na obrázku nižšie ako prvé zbadáme kruh. Nerozmýšlame nad ním ako množstvom čiar, ale považujeme ho za celok. V našich mysliach máme množstvo takýchto konštruktov. Rovnako, ak nejaká časť celku chýba, dokážeme si ju podvedome doplniť.

Gestalt princíp uzavretosti

V praxi vieme tento princíp použiť pri odstraňovaní zbytočných elementov ako orámovanie, farebné pozadie, vodiace čiary atď. Napriek tomu užívateľ bez problému rozozná, o aký typ vizualizácie sa jedná a informácia v nej môže vďaka čistejsiemu dizajnu vyniknúť viac.

Princíp plynulosti (continuity)

Princíp plynulosti hovorí, že ľudia majú tendenciu sledovať hladké kontinuálne vzory. Toto môžeme využiť pri čiarových grafoch, kde plynulé línie pomáhajú sledovať trendy v dátach. Druhou možnou aplikáciou je zoraďovanie podľa hodnoty. Pri doplnkových elementoch ako nadpis, podnadpis, značenie osí atď. by mali mať rovnaké zarovnanie a odsadenie.

Gestalt princíp plynulosti

Princíp prepojenia (connection)

Posledný princíp hovorí, že objekty, ktoré sú prepojené, vnímame ako jednu entitu. Toto môžeme aplikovať pri vizualizáciách, kde sú dátové body prepojené čiarami alebo inými vizuálnymi prvkami ako čiarové a pásové grafy, “slope” grafy a iné. Prepojenie vyvoláva väčšinou silnejšiu asociáciu ako tvar alebo farba, ale menšiu ako ohraničenie.

Gestalt princíp prepojenia

Praktický príklad

Pozrime sa na príklad aplikácie rôznych princípov a ako menia naše vnímanie.

Začneme s bodovým grafom.

Základný graf

Pri prvom pohľade sa zrejme jedná o zobrazenie dvoch skupín, keďže v každom mesiaci máme dve hodnoty. Nevieme ale určiť, kam jednotlivé body patria, či existuje nejaký signál v dátach. Skôr to vyzerá na náhodný zhluk bodov.

Pri aplikácii princípu podobnosti (tvar a farba) sa čitateľnosť aj množstvo informácií, ktoré vieme vyčítať, výrazne zvyšuje.

Základný graf + princíp podobnosti

Jedna skupina dosahuje vyššie hodnoty na začiatku aj konci roka, mesiace apríl až jún ma však slabé. Druhá skupina má naopak mesiace apríl až jún silnejšie, v máji je pritom rozdiel najväčší z celého roka. Napriem tomuto zlepšeniu sa graf stále nečíta veľmi dobre. Body príliš skáču a je ťažké udržat na nich pozornosť.

Skúsme teda ešte aplikovať princíp prepojenia.

Základný graf + princíp podobnosti + princíp prepojenia

Čitateľnosť je oveľa ľahšia. Vďaka prepojeniu bodov nemusíme vynakladať veľa úsilia na sledovanie a porovnanie trendu. Zmena v tomto kroku sa mi zdá byť ešte výraznejšia než predchádzajúca. Pri prvom grafe by väčšina používateľov strávila len minimum času a rýchlo by ho preskočila, pretože informácie neboli na prvý pohľad zaujímavé. Druhý graf už poskytol potrebný kontext – jasne vidíme rozdiely medzi dvomi radmi, ktoré by sme nemali prehliadať. Avšak, porozumenie tomuto grafu vyžaduje veľa sústredenia a môže byť únavné. Pridanie prepojenia výrazne zjednodušilo graf a umožnilo nám rýchlejšie a ľahšie pochopiť viac informácií. Mimochodom, všimli ste si, že sme odstránili jeden komponent podobnosti? Rovnaký tvar nežnížil vnímanie rozdielov. Mohli sme ho ponechať, ale všeobecne by som odporučil odstrániť každý element, ktorý sám o sebe nepridáva hodnotu.

Ako posledný aplikujeme princíp ohraničenia.

Základný graf + princíp podobnosti + princíp prepojenia + princíp ohraničenia

Keď sa na graf pozrieme teraz, zrejme nám ako prvá padne do oka výrazná červená oblasť, ktorá je v jasnom kontraste so zvyškom grafu. Typicky sa môže jednať o predpokladaný vývoj do konca roka a neohraničená oblasť bude doterajší reálny vývoj. Následne sa presúvame k vnímaniu informácií z predchádzajúcich krokov ako rozdiel v trendoch dvoch skupín.

Záver

Gestalt princípy sú mocným nástrojom pri navrhovaní vizualizácií dát, ktoré sú nielen esteticky príjemné, ale aj efektívne v komunikácii komplexných informácií. V tomto blogovom príspevku sme si prešli 6 kľúčových princípov blízkosť, podobnosť, ohraničenie, uzavretosť, plynulosť a prepojenie a ukázali sme si, ako ich aplikovať pri tvorbe vizualizácií v jazyku R. Tieto princípy nám pomáhajú usmerňovať pozornosť užívateľa, znižovať kognitívne zaťaženie a zvyšovať zrozumiteľnosť prezentovaných dát.

Pri tvorbe vizualizácií je dôležité mať na pamäti, že každý element by mal byť v návrhu zámerne umiestnený a mal by prispievať k hlavnému cieľu vizualizácie. Zbytočné prvky by mali byť eliminované, aby sa predišlo preťaženiu užívateľa informáciami. Používanie Gestalt princípov vám umožní vytvárať vizualizácie, ktoré sú nielen vizuálne príťažlivé, ale aj funkčné a efektívne v sprostredkovaní informácií.

Ak by ste sa chceli dozvedieť viac o problematike ako vizualizovať a komunikovať dáta, odporúčam knihu od Cole Nussbaumer Knaflic – Storytelling with Data, ktorá odkazuje na mnoho ďaľších zdrojov, a tiež súvisiacu stránku https://www.storytellingwithdata.com/.

Vývoj a nasadenie Shiny aplikácií v jazyku R 150 150 cleandata

Vývoj a nasadenie Shiny aplikácií v jazyku R

Shiny aplikácie umožňujú interaktívnu analýzu dát a vizualizácie v reálnom čase. Shiny, ako súčasť R ekosystému, ponúka flexibilitu a široké možnosti prispôsobenia, čo ho robí atraktívnou alternatívou k tradičným BI nástrojom. V článku jej výhody a nevýhody voči klasickým BI riešeniam, ako sú Power BI alebo Tableau. Zároveň sa pozriem na výzvy spojené s nasadením a údržbou takýchto aplikácií v produkčnom prostredí aj ukážkou reálnej aplikácie.

shiny_app

Úvod

Analyzovanie dát a vytváranie predikčných modelov sú dôležitými krokmi v rámci dátovej analýzy a data science workflow-u. Avšak, tento proces sa nekončí len analýzou samotnou. Konečným krokom je komunikovanie výsledkov. Či už ide o prezentovanie kľúčových zistení alebo o výstup v podobe dátového produktu, je nevyhnutné tieto výsledky efektívne odkomunikovať koncovým užívateľom a stakeholderom.

Existuje mnoho nástrojov, ktoré môžu byť použité na túto komunikáciu – od základných tabuliek a grafov v Exceli, cez prezentácie v PowerPointe, až po použitie pokročilejších dashboardových nástrojov ako PowerBI a Tableau. Pre špecifické potreby a väčšiu flexibilitu však môže byť nevyhnutné vytvoriť vlastné webové aplikácie, ktoré umožnia interaktívnu prácu s dátami. Jedným z nástrojov, ktorý umožňuje vytvárať takéto custom webové aplikácie, je Shiny v R (a aktuálne už aj Shiny v Pythone).

Čo je R Shiny

Shiny je framework od spoločnosti Posit (pôvodne R Studio), ktorý umožňuje vytvárať interaktívne webové aplikácie priamo v R. Je to nástroj pre R programátorov, ktorí chcú prezentovať svoje analýzy a vizualizácie interaktívnym spôsobom bez potreby vedieť HTML, CSS alebo JavaScript (hoci znalosť týchto technológií rozširuje flexibilitu, ktorú Shiny ponúka).

Shiny vs PowerBI (a iné nástroje)

Pomenujme najskôr “slona v miestnosti”. Je Shiny ten najlepší nástroj? Nie, nie je. Pre väčšinu prípadov si bohato vystačíte s Excelom a PowerBI (alebo Tableau či inými alternatívami, ale keďže mám bohaté skúsenosti s PowerBI, budem ho uvádzať ako príklad). Tieto nástroje sú nenáročné na používanie, ich „learning curve“ je ľahko zvládnuteľná na bežnej používateľskej úrovni a väčšinou sa jednoducho integrujú do spoločnosti. Poskytujú tiež dostatočnú flexibilitu, najmä MS produkty vďaka Power Query a jazyku DAX.

Prečo teda použiť Shiny? Odpoveď je jednoduchá: kedykoľvek vytvárate pokročilejšiu analytiku v R, bude jednoduchšie ju dať do produkcie natívnym nástrojom, ktorý nijakým spôsobom neobmedzuje funkcionalitu. Áno, PowerBI umožňuje použitie R a Pythonu, ale existujú obmedzenia na počet záznamov, ktoré môžete spracovať (150 000 riadkov je naozaj málo), podpora knižníc je obmedzená a vizualizácie sú statické obrázky.

Ďalším dôvodom na použitie Shiny môžu byť špecifické požiadavky na dizajn. Vďaka HTML, CSS a JavaScriptu máte prakticky neobmedzené možnosti. Rovnako máte viacero možností, kde si aplikáciu budete hostovať, čo zvyšuje flexibilitu pri nasadení v rôznych prostrediach.

Okrem toho, Shiny v kombinácii s frameworkami ako Golem alebo Rhino, poskytuje silné nástroje pre Continuous Integration/Continuous Deployment (CI/CD) vďaka integrácii s Gitom. Toto umožňuje automatizovaný a kontrolovaný proces vývoja, testovania a nasadzovania aplikácií, čo je obzvlášť užitočné v tímoch alebo pri práci na väčších projektoch. Takýto prístup zvyšuje kvalitu kódu, zrýchľuje vývoj a umožňuje rýchlejšie reagovať na zmeny a požiadavky.

Pre zosumarizovanie:

Výhody Shiny:

  • Flexibilita: Umožňuje používať celú silu R, vrátane knižníc a vlastných skriptov.
  • Open-source: Bezplatný a komunitou podporovaný nástroj.
  • Jednoduché rozšírenie: Možnosť integrácie s ďalšími nástrojmi a technológiami.
  • Výkon: Dokáže spracovať veľké množstvo dát.

Nevýhody Shiny:

  • Optimalizácia: Je nutná optimalizácia skriptov a modulov, aby užívateľ zbytočne nečakal pri dlho bežiacich výpočtoch.
  • Náročnosť: Vyžaduje znalosti R a programovania.

Výhody tradičných nástrojov:

  • Jednoduchosť použitia: Intuitívne rozhranie vhodné pre neprogramátorov.
  • Výkon: Optimalizované pre rýchle spracovanie veľkých dát.

Nevýhody tradičných nástrojov:

  • Náklady: Licenčné poplatky môžu byť vysoké.
  • Obmedzená flexibilita: Menej možností pre pokročilé analýzy a customizáciu oproti Shiny.
  • Výkon: Aj keď je PowerBI optimalizovaný pre veľké dáta, pri nesprávnej práci s ETL v Power Query a zle napísaných DAX funkciách môže výkon výrazne klesnúť, čo môže spôsobiť pomalé načítavanie a spracovanie dát.

“Vanilla” Shiny vs špecializované frameworky

Pri vývoji aplikácií v Shiny máte na výber medzi tzv. “vanilla” Shiny a špecializovanými frameworkami, ako sú Golem a Rhino. Každá možnosť má svoje výhody a nevýhody, ktoré by ste mali zvážiť v závislosti od vašich projektových potrieb.

“Vanilla” Shiny

“Vanilla” Shiny je základná verzia Shiny frameworku, ktorú väčšina používateľov začína používať. Je rýchly na nasadenie a umožňuje rýchle vytváranie prototypov a jednoduchých aplikácií. Táto verzia je ideálna pre menšie projekty alebo pre rýchle vytvorenie funkčného prototypu ako proof of concept.

Výhody:

  • Jednoduchosť a rýchlosť nasadenia.
  • Skvelé pre začínajúcich používateľov alebo menšie projekty.
  • Žiadna dodatočná záťaž z používania frameworkov, priamočiary kód.

Nevýhody:

  • Menej vhodné pre veľké a komplexné aplikácie.
  • Môže byť ťažké udržať čistý a organizovaný kód pri rozrastaní aplikácie.
  • Nedostatok robustných nástrojov na správu veľkých projektov, ako sú moduly, testovanie a CI/CD.

Golem

Golem je špecializovaný framework, navrhnutý pre vývoj robustných a produkčných Shiny aplikácií. Poskytuje silnú štruktúru pre váš projekt a podporuje modulárny prístup k vývoju, čo umožňuje lepšiu organizáciu a škálovateľnosť aplikácie. Výsledný projekt je zabalený ako R knižnica, čo prináša niekoľko výhod, vrátane jednoduchšej správy závislostí, opätovnej použiteľnosti kódu a jednoduchého nasadzovania. Benefitom je tiež kniha Engineering Production-Grade Shiny Apps od autorov Golemu.

Výhody:

  • Robustná štruktúra projektu, ktorá podporuje modularizáciu kódu.
  • Výsledok vo forme R knižnice, čo zjednodušuje správu a opätovné použitie kódu.
  • Umožňuje lepšiu správu veľkých a komplexných aplikácií.
  • Obsahuje nástroje na testovanie, nasadzovanie a CI/CD procesy.

Nevýhody:

  • Strmšia “learning curve” v porovnaní s “vanilla” Shiny.
  • Vyžaduje viac počiatočného nastavenia a organizácie.

Rhino

Rhino je moderný framework od spoločnosti Appsilon pre Shiny aplikácie, zameraný na väčšie projekty a kolaboráciu v tíme. Je postavený na princípoch moderného vývoja softvéru, vrátane automatizovaného testovania a CI/CD, čo ho robí ideálnym pre vývoj v prostrediach, kde sú požiadavky na kvalitu a škálovateľnosť vysoké. Rhino je navyše aktívne vo vývoji a pripravuje sa aj verzia pre Python, čo prináša sľubné rozšírenie možností pre používateľov preferujúcich Python.

Výhody:

  • Integrácia s modernými vývojovými nástrojmi a postupmi.
  • Flexibilná štruktúra, ktorá umožňuje pokročilú customizáciu a integráciu s front-end technológiami.
  • Silná podpora pre tímovú prácu a verziovanie kódu.
  • Aktívny vývoj, vrátane pripravovanej podpory pre Python.

Nevýhody:

  • Vyššia komplexnosť a náročnosť na vývoj v porovnaní s “vanilla” Shiny.
  • Vyžaduje znalosť moderných vývojárskych nástrojov a postupov.

Možnosti deploymentu

Po vytvorení Shiny aplikácie prichádza na rad jej nasadenie (deployment), aby bola dostupná pre koncových užívateľov. Existuje niekoľko možností, ako Shiny aplikáciu nasadiť, pričom každá z nich má svoje výhody a nevýhody.

Shinyapps.io

Najjednoduchší spôsob nasadenia je prostredníctvom shinyapps.io, ktorý je možný na pár kliknutí priamo cez RStudio IDE. Tento hostingový servis od Posit umožňuje rýchle a jednoduché nasadenie aplikácie.

Výhody:

  • Jednoduchosť nasadenia: Nasadenie aplikácie je možné vykonať na pár kliknutí priamo z RStudio.
  • Bez nutnosti infraštruktúry: Nemusíte sa starať o servery, firewall ani hardvér – všetko je spravované v cloude.
  • Free tier: Umožňuje hosťovať až 5 aplikácií zdarma, čo je výhodné pre menšie projekty alebo testovanie.

Nevýhody:

  • Výkon: Vo free verzii môže byť výkon aplikácie pomalší, čo sa prejavuje najmä pri vyššej záťaži alebo zložitých aplikáciách.
  • Zabezpečenie: Shinyapps.io ponúka základné možnosti autentifikácie, ale pokročilé zabezpečenie a kontrolu prístupu je obmedzené.
  • Zdieľaná platforma: Aplikácie bežia na zdieľanej infraštruktúre, čo môže mať vplyv na spoľahlivosť a výkon v prípade veľkého počtu používateľov.

Posit Connect

Posit Connect je profesionálna platforma pre nasadenie Shiny aplikácií a iných dátových produktov (napr. R Markdown, Plumber API, Python aplikácie), ktorá je navrhnutá pre podnikové prostredia. Poskytuje pokročilé možnosti nasadzovania, správu prístupov a monitorovanie aplikácií.

Výhody:

  • Široká podpora obsahu: Podporuje rôzne typy obsahu vrátane Shiny aplikácií, R Markdown reportov, Python skriptov a viac.
  • Bezpečnosť: Umožňuje pokročilé možnosti autentifikácie a kontroly prístupu, čím poskytuje lepšie zabezpečenie dát.
  • Škálovateľnosť: Podpora pre škálovanie aplikácií a správu veľkého počtu používateľov a prístupových práv.
  • Zjednodušené nasadenie: Možnosť nasadenia aplikácií cez push-button alebo pomocou Git.
  • Monitoring a správa: Poskytuje nástroje na sledovanie výkonu aplikácií a správu servera za účelom optimalizácie prevádzky.

Nevýhody:

  • Náklady: Posit Connect je platená služba, čo môže byť finančne náročné pre menšie tímy alebo jednotlivcov.
  • Komplexnosť: Vyžaduje infraštruktúru a určité technické znalosti pre správu a údržbu.

Docker + Cloud služby (GCP, AWS, Azure)

Pre pokročilejších používateľov je možné nasadiť Shiny aplikáciu pomocou Dockeru a cloudových služieb ako Google Cloud Platform (GCP), Amazon Web Services (AWS) alebo Microsoft Azure.

Výhody:

  • Flexibilita: Možnosť nasadiť aplikáciu na rôzne cloudové platformy podľa preferencií.
  • Škálovateľnosť: Vysoká škálovateľnosť a možnosť spravovať zdroje podľa aktuálnych potrieb.
  • Kontrola: Úplná kontrola nad infraštruktúrou a konfiguráciou prostredia.

Nevýhody:

  • Komplexnosť: Vyžaduje pokročilé technické znalosti na konfiguráciu Dockeru a cloudových služieb.
  • Náklady: Prevádzka v cloude môže byť nákladná, najmä pri nesprávnej konfigurácii zdrojov.

Docker + Lokálny RStudio Server

Nasadenie Shiny aplikácie pomocou Dockeru a lokálneho RStudio Servera je ďalšou možnosťou pre tímy, ktoré chcú mať úplnú kontrolu nad svojou infraštruktúrou.

Výhody:

  • Kontrola: Úplná kontrola nad prostredím a konfiguráciou servera.
  • Izolácia: Docker poskytuje izolované prostredie pre aplikácie, čo zlepšuje bezpečnosť a stabilitu.
  • Nákladová efektívnosť: Ak už máte existujúcu infraštruktúru, náklady môžu byť nižšie v porovnaní s cloudovými službami.

Nevýhody:

  • Komplexnosť: Vyžaduje správu a údržbu vlastnej infraštruktúry, čo môže byť náročné na čas, financie a technické zdroje.
  • Obmedzená škálovateľnosť: Lokálna infraštruktúra môže byť limitovaná dostupnými zdrojmi.

Príkladová Shiny Aplikácia

Táto príkladová Shiny aplikácia bola vytvorená pomocou frameworku Rhino a predstavuje posledný krok v rámci projektu, ktorý začal získavaním dát pomocou web scrapingu, spracovaním dát, a následne tvorbou predikčného modelu. Celý projekt bol zdokumentovaný v sérii článkov:

Aplikácia umožňuje používateľom preskúmať a vizualizovať tieto dáta. Ako hlavný benefit, ktorý demonštruje výhody použitia Shiny (okrem custom dizajnu), je integrácia predikčného modelu. Používatelia môžu zadať parametre bytu a aplikácia im poskytne odhadovanú cenu, čo je praktický príklad využitia pokročilej analytiky a interaktívnych možností Shiny.

Aplikáciu si môžete vyskúšať na shinyapps.io alebo ako kontajnerizovanú aplikáciu na Google Cloud Platform (GCP).