{"id":320,"date":"2017-12-26T20:07:25","date_gmt":"2017-12-26T20:07:25","guid":{"rendered":"http:\/\/science.ekqvist.fi\/blogi\/?p=320"},"modified":"2018-01-24T18:39:17","modified_gmt":"2018-01-24T18:39:17","slug":"shiny","status":"publish","type":"post","link":"https:\/\/science.ekqvist.fi\/blogi\/shiny\/shiny\/","title":{"rendered":"Shiny"},"content":{"rendered":"<p>P\u00e4\u00e4sin kokeilemaan r-ohjelman shiny-ohjelmaa. Ensin asennettaan paketti:<\/p>\n<p>install.packages(&#8220;rsconnect&#8221;)<br \/>\ninstall.packages(&#8220;RCurl&#8221;)<\/p>\n<p>install.packages(&#8220;shiny&#8221;)<\/p>\n<pre id=\"rstudio_console_output\" class=\"GNKRCKGCGSB\" tabindex=\"0\"><span class=\"GNKRCKGCASB ace_constant\">Installing package into \u2018\/home\/marko\/R\/i686-pc-linux-gnu-library\/3.4\u2019\r\n(as \u2018lib\u2019 is unspecified)\r\n<\/span><span class=\"GNKRCKGCASB ace_constant\">also installing the dependencies \u2018httpuv\u2019, \u2018xtable\u2019, \u2018R6\u2019, \u2018sourcetools\u2019\r\n<\/span><\/pre>\n<p>Sitten ajetaan ohjelma:<br \/>\nlibrary(shiny)<\/p>\n<p>runExample(&#8220;01_hello&#8221;)<br \/>\nEsimerkki l\u00f6ytyy t\u00e4\u00e4lt\u00e4<a href=\"https:\/\/ekqvist.shinyapps.io\/01_hello\/\" target=\"_blank\" rel=\"noopener\"> shiny sivuiltani<\/a>.<\/p>\n<p>T\u00e4ss\u00e4 koodia:<\/p>\n<p>&gt; #initialize<br \/>\n&gt; library(datasets)<br \/>\n&gt; library(ggplot2)<br \/>\n&gt;<br \/>\n&gt; #helper function (convert vector to named list)<br \/>\n&gt; namel&lt;-function (vec){<br \/>\n+ tmp&lt;-as.list(vec)<br \/>\n+ names(tmp)&lt;-as.character(unlist(vec)) + tmp + } &gt; # shiny server side code for each call<br \/>\n&gt; shinyServer(function(input, output, session){<br \/>\n+ #update variable and group based on dataset<br \/>\n+ output$variable &lt;- renderUI({<br \/>\n+ obj&lt;-switch(input$dataset,<br \/>\n+ &#8220;iris&#8221; = iris,<br \/>\n+ &#8220;mtcars&#8221; = mtcars)<br \/>\n+ var.opts&lt;-namel(colnames(obj))<br \/>\n+ selectInput(&#8220;variable&#8221;,&#8221;Variable:&#8221;, var.opts) # uddate UI<br \/>\n+ })<br \/>\n+<br \/>\n+ output$group &lt;- renderUI({<br \/>\n+ obj&lt;-switch(input$dataset,<br \/>\n+ &#8220;iris&#8221; = iris,<br \/>\n+ &#8220;mtcars&#8221; = mtcars)<br \/>\n+ var.opts&lt;-namel(colnames(obj))<br \/>\n+ selectInput(&#8220;group&#8221;,&#8221;Groups:&#8221;, var.opts) # uddate UI<br \/>\n+ })<br \/>\n+<br \/>\n+ output$caption&lt;-renderText({<br \/>\n+ switch(input$plot.type,<br \/>\n+ &#8220;boxplot&#8221; = &#8220;Boxplot&#8221;,<br \/>\n+ &#8220;histogram&#8221; = &#8220;Histogram&#8221;,<br \/>\n+ &#8220;density&#8221; = &#8220;Density plot&#8221;,<br \/>\n+ &#8220;bar&#8221; = &#8220;Bar graph&#8221;)<br \/>\n+ })<br \/>\n+<br \/>\n+<br \/>\n+ output$plot &lt;- renderUI({<br \/>\n+ plotOutput(&#8220;p&#8221;)<br \/>\n+ })<br \/>\n+<br \/>\n+ #plotting function using ggplot2<br \/>\n+ output$p &lt;- renderPlot({<br \/>\n+<br \/>\n+ plot.obj&lt;&lt;-list() # not sure why input$X can not be used directly?<br \/>\n+ plot.obj$data&lt;&lt;-get(input$dataset)<br \/>\n+ plot.obj$variable&lt;&lt;-with(plot.obj$data,get(input$variable))<br \/>\n+ plot.obj$group&lt;&lt;-with(plot.obj$data,get(input$group))<br \/>\n+<br \/>\n+ #dynamic plotting options<br \/>\n+ plot.type&lt;-switch(input$plot.type,<br \/>\n+ &#8220;boxplot&#8221; = geom_boxplot(),<br \/>\n+ &#8220;histogram&#8221; = geom_histogram(alpha=0.5,position=&#8221;identity&#8221;),<br \/>\n+ &#8220;density&#8221; = geom_density(alpha=.75),<br \/>\n+ &#8220;bar&#8221; = geom_bar(position=&#8221;dodge&#8221;)<br \/>\n+ )<br \/>\n+<br \/>\n+ require(ggplot2)<br \/>\n+ #plotting theme<br \/>\n+ .theme&lt;- theme(<br \/>\n+ axis.line = element_line(colour = &#8216;gray&#8217;, size = .75),<br \/>\n+ panel.background = element_blank(),<br \/>\n+ plot.background = element_blank()<br \/>\n+ )<br \/>\n+ if(input$plot.type==&#8221;boxplot&#8221;) { #control for 1D or 2D graphs<br \/>\n+ p&lt;-ggplot(plot.obj$data,<br \/>\n+ aes(<br \/>\n+ x = plot.obj$group,<br \/>\n+ y = plot.obj$variable,<br \/>\n+ fill = as.factor(plot.obj$group)<br \/>\n+ )<br \/>\n+ ) + plot.type<br \/>\n+<br \/>\n+ if(input$show.points==TRUE)<br \/>\n+ {<br \/>\n+ p&lt;-p+ geom_point(color=&#8217;black&#8217;,alpha=0.5, position = &#8216;jitter&#8217;)<br \/>\n+ }<br \/>\n+<br \/>\n+ } else {<br \/>\n+<br \/>\n+ p&lt;-ggplot(plot.obj$data,<br \/>\n+ aes(<br \/>\n+ x = plot.obj$variable,<br \/>\n+ fill = as.factor(plot.obj$group),<br \/>\n+ group = as.factor(plot.obj$group),<br \/>\n+ #color = as.factor(plot.obj$group)<br \/>\n+ )<br \/>\n+ ) + plot.type<br \/>\n+ }<br \/>\n+<br \/>\n+ p&lt;-p+labs(<br \/>\n+ fill = input$group,<br \/>\n+ x = &#8220;&#8221;,<br \/>\n+ y = input$variable<br \/>\n+ ) +<br \/>\n+ .theme<br \/>\n+ print(p)<br \/>\n+ })<br \/>\n+ })<\/p>\n","protected":false},"excerpt":{"rendered":"<p>P\u00e4\u00e4sin kokeilemaan r-ohjelman shiny-ohjelmaa. Ensin asennettaan paketti: install.packages(&#8220;rsconnect&#8221;) install.packages(&#8220;RCurl&#8221;) install.packages(&#8220;shiny&#8221;) Installing package into \u2018\/home\/marko\/R\/i686-pc-linux-gnu-library\/3.4\u2019 (as \u2018lib\u2019 is unspecified) also installing the dependencies \u2018httpuv\u2019, \u2018xtable\u2019, \u2018R6\u2019, \u2018sourcetools\u2019 Sitten ajetaan ohjelma: library(shiny) runExample(&#8220;01_hello&#8221;) Esimerkki l\u00f6ytyy t\u00e4\u00e4lt\u00e4 shiny sivuiltani. T\u00e4ss\u00e4 koodia: &gt; #initialize &gt; library(datasets) &gt; library(ggplot2) &gt; &gt; #helper function (convert vector to named list) &gt; namel&lt;-function <a class=\"read-more-excerpt\" href=\"https:\/\/science.ekqvist.fi\/blogi\/shiny\/shiny\/\">[&#8230;] Read More<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[56],"tags":[],"_links":{"self":[{"href":"https:\/\/science.ekqvist.fi\/blogi\/wp-json\/wp\/v2\/posts\/320"}],"collection":[{"href":"https:\/\/science.ekqvist.fi\/blogi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/science.ekqvist.fi\/blogi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/science.ekqvist.fi\/blogi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/science.ekqvist.fi\/blogi\/wp-json\/wp\/v2\/comments?post=320"}],"version-history":[{"count":5,"href":"https:\/\/science.ekqvist.fi\/blogi\/wp-json\/wp\/v2\/posts\/320\/revisions"}],"predecessor-version":[{"id":330,"href":"https:\/\/science.ekqvist.fi\/blogi\/wp-json\/wp\/v2\/posts\/320\/revisions\/330"}],"wp:attachment":[{"href":"https:\/\/science.ekqvist.fi\/blogi\/wp-json\/wp\/v2\/media?parent=320"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/science.ekqvist.fi\/blogi\/wp-json\/wp\/v2\/categories?post=320"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/science.ekqvist.fi\/blogi\/wp-json\/wp\/v2\/tags?post=320"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}