Kaip sukurti interaktyvias žiniatinklio programas naudojant „Shiny“ R

Kaip Sukurti Interaktyvias Ziniatinklio Programas Naudojant Shiny R



Dėl R Shiny sistemos, RStudio paketo, sukurti dinamines žiniatinklio programas naudojant R yra gana paprasta. „Shiny“ pranašumas yra tas, kad jis suteikia galimybę įdėti R kodą į žiniatinklį, todėl jis tampa prieinamesnis platesniam vartotojų ratui. Naudodami R Shiny galite sukurti labai galingas duomenų ataskaitas ir vaizdinius elementus, kurie leidžia vartotojui analizuoti duomenų rinkinį. Kartu su Shiny komponentais, HTML elementai gali būti naudojami programos turiniui kurti. Šiandienos straipsnis padės jums sukurti interaktyvią žiniatinklio programą naudojant R's Shiny paketą. Norėdami tai padaryti, įsitikinkite, kad „RStudio“ jau yra įdiegtas.

Įdiekite Shiny Package į RStudio

Prieš kurdami interaktyvią žiniatinklio programą RStudio, turėtume turėti joje jau įdiegtą paketą „Shiny“. Norėdami tai padaryti, turite išplėsti „RStudio“ meniu „Įrankiai“, o po to pasirinkti „Įdiegti paketus“. Atsidariusiame lange turite paminėti paketą, kurį norite įdiegti, t. y. „blizgus“, ir bakstelėkite mygtuką „Įdiegti“. „RStudio“ įdiegs blizgantį paketą „RStudio“ konsolėje.





Pradėkite nuo Shiny in R

Norėdami pradėti naudoti Shiny in R, turite sukurti naują R failą naudodami meniu „Failas“, esantį pirmoje „RStudio“ vietoje. Išplėskite jį ir naudokite parinktį „Naujas failas“, po to „R Script“. „RStudio“ bus atidarytas scenarijaus failas be pavadinimo. Pervardykite jį į „R“ failą norimoje vietoje.



Dabar įkelkite reikiamus paketus, reikalingus interaktyviai programai kurti R programoje, t. y. naudokite R funkciją „biblioteka“. Teiginiai „if“ naudojami anksčiau neįdiegtiems paketams įdiegti. Shiny paketas naudojamas kuriant interaktyvią žiniatinklio programų sąsają kartu su kai kuriomis grafinėmis vizualizacijomis. Paketas „dplyr“ daugiausia naudojamas norint palengvinti duomenų apdorojimą R naudojant kai kurias naudingas funkcijas.



Galiausiai, „ggplot2“ paketas įkeliamas kaip puikus duomenų vizualizavimo šaltinis, sukuriant pritaikytus ir galingus grafikus.





jeigu ( ! ReikalautiNamespace ( 'blizgantis' , tyliai = TIESA ) ) {

diegti. paketus ( 'blizgantis' )

}

jeigu ( ! ReikalautiNamespace ( 'dplyr' , tyliai = TIESA ) ) {

diegti. paketus ( 'dplyr' )

}

jeigu ( ! ReikalautiNamespace ( 'ggplot2' , tyliai = TIESA ) ) {

diegti. paketus ( 'ggplot2' )

}

biblioteka ( blizgantis )

biblioteka ( dplyr )

biblioteka ( ggplot2 )

Sukurkite interaktyvią egzaminų vertinimo sistemą

Šioje pamokoje mes sukursime „Egzaminų vertinimo sistemą“, kad mokiniai gautų savo pasiektus pažymius pagal balus, gautus iš 100. Pateiktas scenarijus yra „Shiny“ programos „ui“ komponentas, nurodantis programos dizainą ir išvaizdą. programa. Programa sukuria „fluidPage“ – pritaikomą dizainą, kurio mastelį galima pritaikyti prie naršyklės lango.

„TitlePanel“ ir „sidebarLayout“ yra „fluidPage“ palikuonys. Programos pavadinimas „Egzaminų vertinimo sistema“ yra viskas, kas rodoma „titlePanel“. „SidebarPanel“ ir „mainPanel“ yra dvi skiltys, kurias „sidebarLayout“ naudoja programai padalinti. Į „šoninės juostos“ skydelį įtraukta įvesties pora: „textAreaInput“, pavadinta „score“ ir „actionButton“, pavadinta „apskaičiuoti“.



Kiekvienam mokiniui galima įvesti po vieną balą eilutėje naudojant „textAreaInput“. Įvertinimą galima pradėti naudojant „actionButton“. „Pagrindiniame skydelyje“ yra išvesties pora: „tableOutput“, pavadinta „Result“, ir „plotOutput“, pavadintą „ResultGraph“. Tiek „tableOutput“, tiek „plotOutput“ skaičiavimo išvadas pateiks grafiko pavidalu.

ui <- skystisPuslapis (

pavadinimo skydelis ( „Egzaminų vertinimo sistema“ ) ,
šoninės juostos išdėstymas (
šoninė juostaSkyla (
textAreaInput ( 'balas' , „Įveskite mokinių balus (po vieną eilutėje):“ , '' ) ,
veiksmo mygtukas ( 'apskaičiuoti' , „Apskaičiuokime pažymius“ )
) ,
pagrindinis skydelis (
lentelėIšvestis ( 'Rezultatas' ) ,
plotOutput ( 'Rezultatų grafikas' )
) ) )

Serverio metodas nustato programos serverio logiką. Mokinių pažymiai iš pradžių saugomi reaktyviame kintamajame, pavadintame „duomenys“. Tam mygtukas „apskaičiuoti“ yra stebimas R metodu „observeEvent“. Paspaudus mygtuką, kodas iš pradžių teksto lauko įvestyje įvestas reikšmes konvertuoja į skaitines reikšmes.

Po kiekvieno rezultato yra eilutės lūžis, naudojant „\n“, kad kitoje eilutėje būtų įvestas naujas rezultatas. Metodas įtraukia bet kokį rezultatą į „duomenų“ kintamąjį. Jei vartotojas neįvedė balo, metodas rodo pranešimą su klaida.

serveris <- funkcija ( įvesties išvesties ) {

duomenis <- reaktyvusVal ( NULL )

stebėti įvykį ( input$calculate, {

balas <- kaip. skaitinis ( neįtraukti į sąrašą ( strsplit ( input$score, \n ) ) )

jeigu ( ilgio ( balas ) > 0 ) {

duomenis ( balas )

} Kitas {

duomenis ( NULL )

showModal ( modal Dialog (

titulą = 'Klaida' ,

'Klaida: prašau pridėti vertės!' ,

lengvas Uždaryti = TIESA

) )

}

} )

Nurodomi du išėjimai: „output$Result“ ir „output$ResultGraph“, kad būtų rodomi mokinio pažymiai ir pasiekti pažymiai. Dinaminis metodas renderTable() sukuria mokinio testo pažymių ir pažymių duomenų lentelę, kuri pažymėta kaip „output$Result“. Metodas „renderPlot()“, kuris taip pat yra reaktyvus, sugeneruoja studentų pažymių stulpelinę diagramą ir panašiai išsaugo ją „output$ResultGraph“ išvestyje.

Todėl jie bus peržiūrimi kiekvieną kartą, kai atnaujinami įvesties duomenys. Išraiška if (!is.null(data())) nustato, ar gaunami duomenys yra nuliniai. „if“ teiginio scenarijus vykdomas, jei jis nėra tuščias. Studentų balų vektorius sudaro įvesties „duomenis“. Kiekvienam mokiniui suteikiamas įvertinimas pagal jo balą, naudojant case_when() metodą. Duomenų rėmelis, kuriame yra mokinio pažymiai ir testo pažymiai, sukuriamas naudojant duomenų.frame() metodą. Prie duomenų rėmelio pridedami šie stulpeliai: „Studentas“, „Score“ ir „Pažymys“. Įvertinimų pasiskirstymas sudaromas lentelėje, pavadintoje „GradeCount“, naudojant table() metodą.

output$Rezultatas <- renderTable ( {

jeigu ( ! yra. nulinis ( duomenis ( ) ) ) {

pažymių <- atvejis_kada (

duomenis ( ) > 80 ~ 'A' ,

duomenis ( ) > 60 ~ 'B' ,

duomenis ( ) > 40 ~ 'C' ,

duomenis ( ) > 30 ~ 'D' ,

TIESA ~ 'F'

)

duomenis. rėmelis ( Studentas = 1 : ilgio ( duomenis ( ) ) , Rezultatas = duomenis ( ) , Įvertinimas = pažymių )

}

} )

output$ResultGraph <- renderPlot ( {

jeigu ( ! yra. nulinis ( duomenis ( ) ) ) {

pažymių <- atvejis_kada (

duomenis ( ) > 80 ~ 'A' ,

duomenis ( ) > 60 ~ 'B' ,

duomenis ( ) > 40 ~ 'C' ,

duomenis ( ) > 30 ~ 'D' ,

TIESA ~ 'F'

)

Įvertinimų skaičius <- stalo ( pažymių )

Juostinė diagrama sukuriama naudojant „ggplot2“ biblioteką. Skaičius (bendras mokinių, gavusių kiekvieną pažymį, skaičius) ir stulpelis Įvertinimas sukuriami DataFrame. Juostinė diagrama su „Grade“ duomenimis „x ašyje“ ir „Skaičiavimo“ duomenimis „y ašyje“ sukuriama naudojant geom_bar() metodą. Parinktis stat = „identity“ nurodo „ggplot2“ naudoti tikrus duomenis be jokios transformacijos. Pavadinimas, x ašies etiketė ir y ašies etiketė pridedama naudojant „laboratorijų“ metodą. Juostos spalvos priskiriamos naudojant scale_fill_manual() metodą. Nereikalingos tinklelio linijos ir perdangos komponentai pašalinami naudojant theme_minimal() metodą. shinyApp(ui, serveris) metodas sukuria programą.

ggplot ( duomenis = duomenis. rėmelis ( Įvertinimas = vardai ( Įvertinimų skaičius ) , grafas = kaip. skaitinis ( Įvertinimų skaičius ) ) ,
aes ( x = Įvertinimas ir = Skaičiuokite, užpildykite = Įvertinimas ) ) +
geom_bar ( stat = 'tapatybė' ) +
laboratorijos ( titulą = 'Pažymių pasiskirstymas' ,
x = 'klasė' ,
ir = 'Count' ) +
scale_fill_manual ( vertybes = c ( 'A' = 'žalias' , 'B' = 'violetinė' , 'C' = 'rožinis' ,
'D' = 'oranžinė' , 'F' = 'raudona' ) ) +
tema_minimalus ( )
}
} )
}
shinyApp ( ui, serveris )

Paleidę šį kodą gavome interaktyvią sąsają, kurioje pridėjome keletą balų ir spustelėjome mygtuką „Apskaičiuokime pažymius“.

Rodoma lentelė, kurioje yra mokinių balai ir pažymiai, o po to – skirtingų spalvų pažymių pasiskirstymo juostinė diagrama.

Išvada

Šiame vadove paaiškinama Shiny paketo naudojimo R kalba per RStudio svarba. Norėdami papildyti savo paaiškinimą, mes sukūrėme interaktyvią žiniatinklio programą studentų vertinimo sistemai R kode, naudodami paketą „Shiny“.