top of page
Writer's pictureMarijana Andabaka

What is Shiny about Shiny APP?

Updated: Jan 24




Shiny aplikacija dostupna je na linku, a source code na GitHub-u



U svijetu analize podataka R programski jezik je postao jedno od najmoćnijih oruđa. Što ako biste mogli podići svoje analize na sasvim novu razinu putem interaktivne komunikacije s podacima i rezultatima? To je upravo ono što Shiny aplikacije omogućuju. Shiny je besplatni paket za R programski jezik za izradu interaktivnih web aplikacija koje omogućuju korisnicima da istražuju i manipuliraju podacima u stvarnom vremenu. Ove aplikacije koriste R kao backend, pružajući mogućnost izvođenja analiza, grafova i statističkih modela, a rezultate prikazuju korisnicima na pregledan i interaktivan način.


Izrada korisničkog sučelja aplikacija je vrlo jednostavna te nije potrebno duboko poznavanje web programiranja. Shiny aplikacije se sastoje od dva glavna dijela: korisničkog sučelja (UI) i serverske logike. Korisničko sučelje definira kako će aplikacija izgledati i kako će korisnici interagirati s njom. Elementi korisničkog sučelja mogu uključivati grafičke elemente (grafovi, tablice, slike, itd.), forme i unosne elemente (tekstualna polja, gumbi, padajući izbornici), layout i stilizacija (razmještaj elemenata, bolje, fontovi). Serverska logika definira kako će aplikacija reagirati na korisničke interakcije, obraditi podatke i ažurirati korisničko sučelje. Elementi serverske logike uključuju: funkcije za obradu podataka (računanje, filtriranje, vizulaizacija podataka), odgovor na korisničke akcije (praćenje promjena u unosima, gumbima, itd.), ažuriranje korisničkog sučelja (dinamičko ažuriranje grafova, tablica, teksta).


Slijedi primjer izrade jednostavne Shiny aplikacije u R Studiu sa ugrađenim skupom podataka mtcars koji sadrži informacije o raznim karakteristikama automobila. Aplikacija omogućuje korisnicima interaktivno istraživanje i vizualizaciju tih podataka.


Otvorite R Studio i novu R skriptu. Ukoliko već niste, prvo preuzmite i instalirajte R sa službene web stranice R projekta. Posjetite stranicu, odaberite ogledalo (mirror) koje vam je geografski najbliže, zatim pronađite odgovarajući operativni sustav (Windows, macOS, Linux) i slijedite upute za preuzimanje i instalaciju. Nakon što ste instalirali R, sljedeći korak je preuzeti i instalirati R Studio. R Studio je integrirano razvojno okruženje (IDE) za R koje olakšava rad s R jezikom. Na stranici, pronađite odgovarajuću verziju R Studia za svoj operativni sustav i slijedite upute za preuzimanje i instalaciju. Nakon uspješne instalacije pokrenite R Studio. Otvorit će se prozor s konzolom i radnim okvirom za pisanje skripti.



Sljedeći korak je instalacija (ako već nemate instalirane pakete) i učitavanje paketa te unos podataka nakon čega možemo definirati korisničko sučelje i serversku logiku.


# Instaliranje paketa
install.packages("shiny")
install.packages("ggplot2")

# Učitavanje paketa
library(shiny)
library(ggplot2)

# Učitavanje mtcars baze podataka
data(mtcars)

# Definiranje korisničkog sučelja
ui <- fluidPage(
    titlePanel("Shiny Aplikacija mtcars"),
    sidebarLayout(
        sidebarPanel(
            selectInput(
                inputId = "x", 
                label = "Odaberi x-osi:", 
                choices = names(mtcars), 
                selected = "mpg"),
            selectInput(
                inputId = "y", 
                label = "Odaberi y-osi:", 
                choices = names(mtcars), 
                selected = "hp")
        ),
        mainPanel(
            plotOutput(
                outputId = "graf")
        )
    )
)

# Definiranje serverske logike
server <- function(input, output){
    output$graf <- renderPlot({
        ggplot(data = mtcars, 
               aes_string(x = input$x, y = input$y)) +
        geom_point() +
        labs(title = paste("Scatterplot of", input$x, "vs",                                                     
             input$y))
    })
}

# Pokretanje Shiny aplikacije
shinyApp(ui = ui, server = server)

fluidPage je funkcija koja stvara fluidnu stranicu što znači da se elementi na stranici prilagođavaju veličini prozora preglednika. Fluidne stranice omogućuju odzivno korisničko sučelje koje se prilagođava veličini zaslona. titlePanel je funkcija koja stvara naslovnu traku na vrhu stranice. Ovdje možete postaviti naslov ili bilo koji drugi sadržaj koji želite prikazati na vrhu vaše aplikacije. sidebarLayout je funkcija koja omogućuje postavljanje strukture sučelja s bočnom trakom (sidebar) i glavnim dijelom stranice. Bočna traka često sadrži unosne elemente poput padajućih izbornika, gumba itd. sidebarPanel je funkcija koja stvara bočnu traku (sidebar) unutar sidebarLayout. Ovdje možete smjestiti različite unosne elemente koji omogućuju korisnicima interakciju s aplikacijom kao što su padajući izbornici, gumbi ili klizači. selectInput omogućuje kreiranje interaktivnih padajućih izbornika u korisničkom sučelju aplikacije. Ova funkcija ima nekoliko argumenata koji omogućuju prilagodbu izgleda i ponašanja padajućeg izbornika. inputId definira jedinstveni identifikator za padajući izbornik. Koristi se kako bi se identificirao izbor korisnika i kako bi se povezao s odgovarajućim podacima u serverskoj logici. label postavlja tekst koji će se prikazati iznad padajućeg izbornika. choices je vektor koji sadrži opcije koje će korisnik moći odabrati u padajućem izborniku. Ove opcije mogu biti niz znakova, brojeva ili faktora. selected omogućuje postavljanje početnog odabira u padajućem izborniku. mainPanel je funkcija koja stvara glavni dio stranice unutar sidebarLayout. Ovdje možete smjestiti sadržaj koji želite prikazati korisnicima, kao što su grafovi, tablice, tekst itd. plotOutput je funkcija koja rezervira mjesto na stranici za prikaz grafičkih elemenata koje generira serverska logika. Na primjer, ako želite prikazati grafikon, koristit ćete plotOutput u mainPanel, a zatim koristiti serversku logiku za generiranje i ažuriranje grafa.


Serverska logika odgovorna je za obradu korisničkih interakcija, generiranje podataka i ažuriranje korisničkog sučelja. output$ koristi se za definiranje izlaza (outputa) koji će se prikazati u korisničkom sučelju. Ime koje slijedi nakon $ određuje identifikator izlaza. Na primjer, output$graf odnosi se na izlaz s identifikatorom "graf". renderPlot je funkcija koja prima R kod koji generira grafikon (plot) i vraća ga kako bi bio prikazan u korisničkom sučelju.


shinyApp je funkcija koja se koristi za povezivanje korisničkog sučelja (UI) i serverske logike kako bi se stvorila kompletna Shiny aplikacija.


Nakon što smo napisali svoju Shiny aplikaciju u R skripti, potrebno ju je spremiti pod imenom app.R. Imenovanje datoteke kao app.R omogućuje R Studiu prepoznavanje da je riječ o Shiny aplikaciji i automatsko postavljanje gumba "Run App" u gornjem desnom kutu. Ovaj gumb omogućuje pokretanje Shiny aplikacije izravno iz R Studia. Ako je kod pravilno napisan, pritiskom na gumb trebali biste vidjeti svoje korisničko sučelje u donjem desnom prozoru.




Čestitke! Upravo ste napravili svoju prvu Shiny aplikaciju te otvorili vrata svijetu interaktivnih analiza podataka i vizualizacija u programskom jeziku R. Bez obzira na to što je ova aplikacija jednostavna, ona predstavlja korak prema nevjerojatnom svijetu Shiny mogućnosti.

Čak i za ovu jednostavnu aplikaciju, vidjeli ste kako lako možete integrirati korisničke unosne elemente, poput klizača, i generirati dinamički grafikon prema tim unesenim vrijednostima. Ovo je samo mali uvod u osnove izrade Shiny aplikacija. Ako vas je ova jednostavna aplikacija inspirirala, znajte da Shiny nudi mnogo mnogo više. Možete dodavati više unosa, grafičkih elemenata, stranica, te čak uključivati kompleksnije funkcionalnosti poput interakcije s bazama podataka ili stvaranja dinamičkih izvještaja. Za daljnje učenje i istraživanje, posjetite službenu Shiny web stranicu, gdje možete pronaći bogat izvor resursa, dokumentaciju i primjere. Također, preporučujemo istraživanje Shiny demo aplikacija dostupnih na toj stranici koje pružaju inspiraciju i prikazuju širok spektar mogućnosti. Također, knjiga Mastering Shiny dostupna u online verziji  izvrstan je vodič i uvod u svijet izrade Shiny aplikacija. Kroz jasno strukturirane lekcije, knjiga vas vodi, od nepoznavanja izrade aplikacija, do statusa stručnog programera koji može pisati velike i kompleksne Shiny aplikacije.


Jedna od brojnih mogućnosti koje pružaju Shiny aplikacije je i njihova implementacija postavljanjem na server kako bi bile dostupne na webu čime se omogućuje pristup bilo kome s internetskom vezom. Shiny aplikacije mogu imati vlastitu domenu, prilagođavajući se vašem brendu ili specifičnim potrebama. Postavljanje vlastite domene dodatno pridonosi profesionalnom izgledu i omogućuje korisnicima jednostavan pristup vašim analizama.


Aplikacije se mogu koristiti u raznim domenama i industrijskim sektorima. U financijskom sektoru mogu se koristiti za praćenje tržišta u stvarnom vremenu, izradu interaktivnih financijskih izvješća i analizu portfelja. U medicini aplikacije omogućuju stvaranje alata za medicinsku dijagnostiku, praćenje vitalnih znakova i generiranje interaktivnih medicinskih izvješća. U marketingu olakšavaju analizu tržišta, segmentaciju ciljane publike i vizualizaciju marketinških podataka. Znanstvenici i analitičari podataka mogu koristiti Shiny za vizualizaciju, analizu i dijeljenje rezultata svojih istraživanja. Shiny aplikacije mogu se koristiti za praćenje i analizu senzorskih podataka, kao što su podaci o kvaliteti zraka, vode ili energiji kao i u mnogim drugim domenama.


14 views0 comments

Comments


bottom of page