From 658b1a30cf6d3f1bc786d5bf2d7d94a89cc71a41 Mon Sep 17 00:00:00 2001 From: Shravani Samala <54723328+shravanisamala@users.noreply.github.com> Date: Wed, 14 Jul 2021 21:09:46 -0400 Subject: [PATCH 01/21] Trying to compile into one file --- server.R => Xserver.R | 0 ui.R => Xui.R | 0 app.R | 2195 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 2195 insertions(+) rename server.R => Xserver.R (100%) mode change 100755 => 100644 rename ui.R => Xui.R (100%) mode change 100755 => 100644 create mode 100644 app.R diff --git a/server.R b/Xserver.R old mode 100755 new mode 100644 similarity index 100% rename from server.R rename to Xserver.R diff --git a/ui.R b/Xui.R old mode 100755 new mode 100644 similarity index 100% rename from ui.R rename to Xui.R diff --git a/app.R b/app.R new file mode 100644 index 0000000..80b90f3 --- /dev/null +++ b/app.R @@ -0,0 +1,2195 @@ +library(shiny) +library(shinydashboard) +library(shinyBS) +library(shinyjs) +library(shinyWidgets) +library(plotly) +library(ggplot2) +library(shinyAce) +library(shinycssloaders) +library(rlocker) +library(ggmap) +library(boastUtils) +library(DT) +library(dplyr) +library(mosaic) +library(plot3D) +library(plotly) +library(datasets) +library(learnr) +library(knitr) +library(rmarkdown) +library(shinyAce) +library(rlocker) +library(ggmap) + +source("helpers.R") + +bank <- read.csv("questionbank.csv") +bank = data.frame(lapply(bank, as.character), stringsAsFactors = FALSE) + +ui <- list( + dashboardPage(skin = "green", + header = dashboardHeader(title = 'Data Visualization', + tags$li(class = "dropdown", actionLink("info", icon("info"), class = "myClass")), + tags$li(class = "dropdown",tags$a(href = "https://shinyapps.science.psu.edu/", + icon("home"))) + ), + + sidebar = dashboardSidebar( + width = 250, + sidebarMenu(id = 'tabs', + menuItem('Overview', tabName = 'overview', icon = icon("dashboard")), + menuItem('Simple Data Visualization', tabName = 'VisualOne', + icon = icon('wpexplorer')), + menuItem('Advanced Data Visualization', tabName = 'exp4', icon = icon('wpexplorer')), + menuItem('References', tabName = "References", icon = icon("leanpub")) + ), + #PSU logo + tags$div(class = "sidebar-logo", + boastUtils::psu_eberly_logo("reversed")) + ), + + body = dashboardBody( + tags$head( + tags$link(rel = "stylesheet", type = "text/css", href = "https://educationshinyappteam.github.io/Style_Guide/theme/boast.css") + ), + tags$style(type = "text/css", ".content-wrapper,.right-side {background-color: white;}"), + + useShinyjs(), + tabItems( + tabItem(tabName = 'overview', + h1('Data Visualization App'), + br(), + h2(strong('About:')), + p('This app illustrates R code for data visualization.'), + br(), + + h2(strong('Instructions:')), + p(tags$li("Simple data visualization section introduces + how to create some commonly used plots with ggplot and Rplot with exercises at the end.")), + p(tags$li("Advanced Data Visualization section + introduces 3D plots, line plots, contour plots, and heat maps.")), + br(), + div(style = 'text-align: center', + bsButton(inputId = 'go2', label = 'Explore', + icon = icon('bolt'), size = 'large', class='circle grow')), + br(), + h2(strong('Acknowledgements:')), + p('This application was coded and developed by Anna (Yinqi) Zhang in 2018 and Yiyun Gong in 2019. + Special Thanks to Grace (Yubaihe) Zhou for being incredibly helpful with programming issues. + It was updated for formatting by Ethan Wright 2020'), + div(class = "updated", "Last Update: 9/4/2020 by EJW.") + ), + + ############ Data Visualization Introduction ####### + ######Characterizing one single Variable###### + + tabItem(tabName = 'VisualOne', + # div(style="display: inline-block;vertical-align:top;", + # tags$a(href='https://shinyapps.science.psu.edu/',tags$img(src='homebut.PNG', width = 19)) + # ), + # div(style="display: inline-block;vertical-align:top;", + # circleButton("info0",icon = icon("info"), status = "myClass",size = "xs") + # ), + + tabsetPanel(type = 'tabs', + ###### One Variable ###### + tabPanel('Single Variable', + h1(strong('One Variable Visualization')), + # br(), + p('This section illustrates R code for data + visulization includes plot() and ggplot() with one Variable'), + + br(), + sidebarLayout( + sidebarPanel( + id="sidebar", + tags$head(tags$style( + HTML('#sidebar{ + background-color: #FFFFFF; + }') + )), + + checkboxInput("previewData", "Preview of Datasets"), + + ####select between plot and ggplot + selectInput(inputId="plotType", label="Select Plot Package", + choices = c('plot', 'ggplot'), + selected = 'plot'), + + ####select datasets + selectInput(inputId="dataset", label="Select Dataset:", + choices= c('cars', 'trees'), + selected = 'cars'), + + ####variable options for 'car' dataset + conditionalPanel( + condition = "input.dataset == 'cars'", + selectInput(inputId="carsVariable", label="Select Variables", + choices = c("speed", "dist"), + selected = 'speed') + ), + + ####variable option for 'trees' dataset + conditionalPanel( + condition = "input.dataset == 'trees'", + selectInput(inputId="treesVariable", label="Select Variables", + choices = c("Girth", "Height", "Volume"), + selected = 'Girth') + ) + #tags$img(src="DataView.pdf") + #includeHTML("ViewData.nb.html") + #tags$a(tags$img(src="pdficon.png"), href="DataView.pdf", download="Viewdata.pdf") + # br(), + #downloadLink("downloadData", "Preview of Data"), + + ), + + mainPanel( + conditionalPanel( + condition="input.previewData==1", + + fluidRow( + column(2, p(strong("Dataset"))), + column(4, DT::dataTableOutput("dataTable")), + + ) + ), + fluidRow( + column(6,plotOutput(outputId="oneDensity", width="100%",height="300px")%>% withSpinner(color="#FFFFFF")), + column(6,plotOutput(outputId="onehist", width="100%",height="300px")%>% withSpinner(color="#FFFFFF")) + ), + fluidRow( + column(width = 6, textOutput(outputId="DensityoneCode")), + column(width = 6, textOutput(outputId="HistogramoneCode")) + ), + br(), + br(), + br(), + br(), + tags$head(tags$style("#qqCode, #BarCode, #DensityoneCode, #HistogramoneCode, + #twoscattercode, #logTransformationCode, #twobarcode, #twoboxcode + {color: #FFFFFF}" + )), + + + fluidRow( + column(6,plotOutput(outputId="onebar", width="100%",height="300px")%>% withSpinner(color="#1E7B14")), + column(6,plotOutput(outputId="oneqq", width="100%",height="300px")%>% withSpinner(color="#1E7B14")) + ), + fluidRow( + column(width = 6, textOutput(outputId="BarCode")), + column(width = 6, textOutput(outputId="qqCode")) + ), + br(), + br() + # div(style = 'text-align: center', + # bsButton(inputId = 'next2', label = 'Next Section', + # icon = icon('angle-double-right'), size = 'small', + # class='circle grow')) + ) + ) + ), + + ###### Two Variable ###### + tabPanel(title='Two Variables', value='panel2', + h3(strong('Two Variables Visualization')), + # br(), + h4('This section illustrates R code for data + visulization uses ggplot() with Two Variables'), + + br(), + sidebarLayout( + sidebarPanel( + id="sidebar", + tags$head(tags$style( + HTML('#sidebar{ + background-color: #FFFFFF; + }') + )), + ####select continuous variable 1 + checkboxInput("previewDataTwo", "Preview of Datasets"), + selectInput(inputId="continuous1", + label="Select First Continuous Variable as X:", + choices= c('Sepal.Length', + 'Sepal.Width'), + selected = 'Sepal.Length'), + + selectInput(inputId="continuous2", + label="Select Second Continuous Variable as Y:", + choices= c('Petal.Length', + 'Petal.Width'), + selected = 'Petal.Length'), + + selectInput(inputId="CategoryVar", + label="Select Categorical Variable:", + choices= 'Species', + selected = 'Species'), + + ), + + mainPanel( + conditionalPanel( + condition="input.previewDataTwo==1", + fluidRow( + column(2, p(strong("Dataset iris"))), + column(5, dataTableOutput("Previewiris")) + ) + #tableOutput("Previewiris") + #p("First four rows of dataset iris") + ), + fluidRow( + column(6,plotOutput(outputId="twoscatter")%>% withSpinner(color="#FFFFFF")), + column(6,plotOutput(outputId="logTransformation")%>% withSpinner(color="#FFFFFF")) + ), + br(), + fluidRow( + column(6,textOutput(outputId="twoscattercode")), + column(6,textOutput(outputId="logTransformationCode")) + ), + br(), + fluidRow( + column(6,plotOutput(outputId="twobar")%>% withSpinner(color="#FFFFFF")), + column(6,plotOutput(outputId="twobox")%>% withSpinner(color="#FFFFFF")) + ), + br(), + fluidRow( + column(6,textOutput(outputId="twobarcode")), + column(6,textOutput(outputId="twoboxcode")) + ) + ) + ) + ), + + tabPanel(title='Exercises', value='panel2', + #uiOutput("urltest")) + #includeMarkdown("test.Rmd") + #system.file("knitr", package="shinyAce") + + fluidRow( + column(6, + verticalLayout( + h2("Instructions"), + wellPanel( + style = "background-color: #FFFFFF", + tags$div(tags$ul( + tags$li("You can try the following questions"), + tags$li("Test your code with the following R script + box with the RMarkDown output under the 'Knitted Output' header"), + tags$li("In each turn, 10 questions will be randomly draw from the question bank."), + tags$li("Uncomment the sample code to start to explore.") + ), + style = "background-color: #FFFFFF")), + h2("Exercises"), + uiOutput('progress'), + wellPanel(style = "background-color: #FFFFFF", + uiOutput("question")%>% withSpinner(color="#FFFFFF"), + uiOutput("options"), + br(), + selectInput("answer", "Select your answer from below", c("","A", "B", "C")), + uiOutput("mark"), + tags$style(type='text/css', '#question{font-size: 15px; + background-color: #FFFFFF;color: black;}', + '.well { padding: 10px; margin-bottom: 15px; max-width: 1000px; }') + + ), + fluidPage( + tags$head( + #tags$style(HTML('#submit{background-color:#FFFFFF; color:white}')), + #tags$style(HTML('#eval{background-color:#FFFFFF; color:white}')), + #tags$style(HTML('#nextq{background-color:#FFFFFF; color:white}')) + ), + fluidRow( + column(12, align="center", + div(style="display: inline-block", actionButton(inputId = 'submit', label = 'Submit', disabled = TRUE, style="success")), + div(style="display: inline-block;vertical-align:top; width: 30px;",HTML("
")), + div(style="display: inline-block", bsButton(inputId = "nextq",label = "Next", disabled = TRUE)), + div(style="display: inline-block;vertical-align:top; width: 30px;",HTML("
")), + div(style="display: inline-block", bsButton(inputId = "reset",label = "Restart", style="danger", disabled = TRUE))) + )), + + + # column(3, + # actionButton(inputId = 'submit', label = 'Submit', style="success") + # ), + # column(3, + # bsButton(inputId = "nextq",label = "Next", style='warning', disabled = TRUE) + # ), + # column(3, + # bsButton(inputId = "reset",label = "Restart", style="danger", ) + # )), + br(), + + ##########try rlocker statement######### + # tags$samp( + # htmlOutput("statements") + # ), + ##########end############# + + h2("Try Your Code"), + aceEditor("rmd", mode="markdown", value='This is some markdown text. It may also have embedded R code +which will be executed. Please also read the output +message for more hints. + +you can add a new code chuck with following two lines +```{r} +``` +```{r} +#structure on datasets we used in previous cases +str(cars) +str(trees) +str(iris) +``` +It can even include graphical elements. +```{r} +#ggplot with one variable +#ggplot(aes(x=dist), data=cars)+geom_histogram() +``` +```{r} +#ggplot with two variable +#ggplot(aes(x=Sepal.Length, y=Petal.Length), data=iris)+ +#geom_line() +``` +```{r} +#Rplot with one variable +plot(cars$speed) +``` +'), +column(6, + withBusyIndicatorUI( + actionButton("eval", "Run"))) + )), +br(), +column(6, + h2("Knitted Output"), + htmlOutput("knitDoc") +) + ) + ) + ) + ), +######Advanced +tabItem(tabName = 'exp4', + tabsetPanel(type = 'tabs', + + ###### Maps ###### + tabPanel('Maps', + br(), + box(title = NULL, style = 'background-color: #FFFFFF', width = NULL, height = NULL, + + selectInput(inputId = 'mapsOp', label = 'Make a US/World Map with ggplot2', + choices = c('US Map - ggplot2', 'US Map - plotly'), selected = 'US Map'), + bsPopover(id = 'mapsOp', title = " ", content = 'mUSMap takes in one dataframe that includes information about different + US states and returns this data or a ggplot object constructed with the data. mWorldMap does the same but it + takes in one dataframe that includes information about different countries.', trigger = 'click'), + + # conditionalPanel('input.mapsOp == "World Map"', + # sliderInput(inputId = 'worldMap1', label = 'The Number of Color Scales', min = 1, max = 10, + # value = 5, step = 1, ticks = TRUE) + # ), + + conditionalPanel('input.mapsOp == "US Map - ggplot2"', + selectInput(inputId = 'usMap1', label = 'Plot Option', choices = c('borders', 'frame')), + selectInput(inputId = 'usMap2', label = 'Style Option', choices = c('compact', 'real')) + ) + + ), + + # box(title = NULL, style = 'background-color: #f0f4c3', width=NULL, height = NULL, + + conditionalPanel('input.mapsOp == "US Map - ggplot2"', + div(style = "background-color: #FFFFFF", + tags$strong('R code: '), + uiOutput('usMapOut2'), + br(), + fluidRow( + column(12, align="center", + plotOutput('usMapOut1', width="80%") + ) + ), + br() + + )), + + conditionalPanel('input.mapsOp == "US Map - plotly"', + div(style = "background-color: #FFFFFF", + tags$strong('R code: '), + uiOutput('plotlyUScode'), + br(), + fluidRow( + column(12, align="center", + plotlyOutput('plotlyUSMap', width='80%')) + ), + br() + + )) + # ) + ), + + ###### 3D Plots ###### + tabPanel('3D Plots', + br(), + fluidRow( + column(width = 12, + box(title = NULL, style = 'background-color: #FFFFFF', width = NULL, height = NULL, + selectInput(inputId = 'Exsel', label = '3D Plot Type', + choices = c('Normal Simulation via Plotly', '3D Basic Scatter Plot', '3D Texts Plot'), + # choices = c('Normal Simulation via Plotly', 'Basic Scatter Plot', 'Basic Scatter Plot Colored by Groups', + # '3D Plots with Confidence Intervals', '3D Texts Plot'), + selected = 'Normal Simulation via Plotly', multiple = FALSE), + + # bsPopover(id = 'Exsel', title = 'Understand the Graph Type', + # content = 'Mesh plot generates a wireframe plot while the scatter plot generates a dotted plot.', + # placement = 'bottom', trigger = 'hover'), + + #a. Normal Simulation via Plotly + conditionalPanel('input.Exsel == "Normal Simulation via Plotly"', + sliderInput(inputId = 'Exsel1', label = 'Please Select Your Sample Size', min = 0, max = 100, + value = 30, step = 1, ticks = TRUE) + ), + + #b. Basic Scatter Plot + conditionalPanel('input.Exsel == "3D Basic Scatter Plot"', + selectInput(inputId = 'basicX', label = 'Variable for X-Axis', choices = c('Sepal.Length', 'Sepal.Width', 'Petal.Length', 'Petal.Width'), + selected = 'Sepal.Length', multiple = FALSE), + selectInput(inputId = 'basicY', label = 'Variable for Y-Axis', choices = c('Sepal.Length', 'Sepal.Width', 'Petal.Length', 'Petal.Width'), + selected = 'Sepal.Width', multiple = FALSE), + selectInput(inputId = 'basicZ', label = 'Variable for Z-Axis', choices = c('Sepal.Length', 'Sepal.Width', 'Petal.Length', 'Petal.Width'), + selected = 'Petal.Length', multiple = FALSE) + ), + #c. + #d. 3D Plots with Confidence Intervals + conditionalPanel('input.Exsel == "3D Plots with Confidence Intervals"', + selectInput(inputId = 'CIX', label = 'Variable for X-Axis', choices = c('Sepal.Length', 'Sepal.Width', 'Petal.Length', 'Petal.Width'), + selected = 'Sepal.Length', multiple = FALSE), + selectInput(inputId = 'CIY', label = 'Variable for Y-Axis', choices = c('Sepal.Length', 'Sepal.Width', 'Petal.Length', 'Petal.Width'), + selected = 'Sepal.Width', multiple = FALSE), + selectInput(inputId = 'CIZ', label = 'Variable for Z-Axis', choices = c('Sepal.Length', 'Sepal.Width', 'Petal.Length', 'Petal.Width'), + selected = 'Petal.Length', multiple = FALSE) + ) + ) + ) + ), + fluidRow( + column(width = 12, + box(title = NULL, style = 'background-color: #FFFFFF', width = NULL, height = NULL, + + #a. Normal Simulation via Plotly + conditionalPanel('input.Exsel == "Normal Simulation via Plotly"', + tags$strong('R code: '), + uiOutput('ExCode'), + br(), + plotlyOutput('plotly1'), + br(), + verbatimTextOutput("hover"), + verbatimTextOutput("click") + ), + + #b. Basic Scatter Plot + conditionalPanel('input.Exsel == "3D Basic Scatter Plot"', + tags$strong('R code: '), + uiOutput('basicRcode'), + br(), + tableOutput('bspTable'), + plotOutput('bspOut1') + ), + + # #c. Basic Scatter Plot Colored by Groups + # conditionalPanel('input.Exsel == "Basic Scatter Plot Colored by Groups"', + # tableOutput('bspTableCopy'), + # plotOutput('bspOut2') + # ), + + # #d. 3D Plots with Confidence Intervals + # conditionalPanel('input.Exsel == "3D Plots with Confidence Intervals"', + # plotOutput('CIOut') + # ), + + #e. 3D Texts Plot + conditionalPanel('input.Exsel == "3D Texts Plot"', + tags$strong('R code: '), + uiOutput('textRcode'), + br(), + tableOutput('textTable'), + plotOutput('textOut') + ) + + ) + ) + ) + ), + + ###### 2D Line Plots ###### + tabPanel('2D Line Plots', + br(), + fluidRow( + column(width = 12, + box(title = NULL, style = 'background-color: #FFFFFF', width = NULL, height = NULL, + + sliderInput(inputId = 'LPsel1', label = 'Please Set the Maximum of X-Axis', min = 0, max = 200, + value = 80, step = 1, ticks = TRUE), + + numericInput(inputId = 'LPnum1', label = 'Theoretical Mean of trace 0', + value = 10, step = 1), + selectInput(inputId = 'LPSEL1', label = 'Please Select Your First Graph Mode', + choices = c('Lines', 'Markers')), + numericInput(inputId = 'LPnum2', label = 'Theoretical Mean of trace 1', + value = -10, step = 1), + selectInput(inputId = 'LPSEL2', label = 'Please Select Your Second Graph Mode', + choices = c('Lines', 'Markers')) + ) + ) + ), + fluidRow( + column(width = 12, + box(title = NULL, style = 'background-color: #FFFFFF', width = NULL, height = NULL, + tags$strong('R code: '), + uiOutput('LPCode'), + br(), + plotlyOutput('plotly2') + ) + ) + ) + ), + + ###### Contour Plots & Heat Maps ###### + tabPanel('Contour Plots & Heatmaps', + br(), + sidebarLayout( + sidebarPanel( + tags$head(tags$style( + HTML('#sidebarmap{ + background-color: #FFFFFF; + }') + )), + #box(title = NULL, style = 'background-color: #FFFFFF', width = NULL, height = NULL, + id="sidebarmap", + div('Heat maps and contour plots are visualization techniques to show + data density on a map. They are particularly helpful when you have + a lot of data points on the map and are mainly interested in their + overall distribution.'), + br(), + selectInput(inputId = 'chSel', label = 'Please Select Your Display Option', choices = c('', 'Contour Plots', 'Heatmaps'), selected = 'Contour Plots'), + + #contour plots + conditionalPanel('input.chSel == "Contour Plots"', + selectInput(inputId = 'chSel2', label = 'View An Example', choices = c('Volcano', 'Protein-Protein Interaction')), + conditionalPanel('input.chSel2 == "Volcano"', + checkboxInput(inputId = 'contourLabel', label = 'Add Contour Labels', value = FALSE) + ) + ), + + #heat maps + conditionalPanel('input.chSel == "Heatmaps"', + selectInput(inputId = 'heat1', label = 'View An Example', choices = c('Volcano', 'Cars')), + conditionalPanel('input.heat1 == "Volcano"', + sliderTextInput(inputId = 'heatmapCol', label = 'Please Select Your Colorscale', + choices = c('purple+green', 'yellow+red', 'pink+purple', 'white+black'), grid = TRUE) + ) + ) + #) + ), + + mainPanel( + box(title = NULL, style = 'background-color: #FFFFFF', width = NULL, height = NULL, + conditionalPanel('input.chSel == "Contour Plots"', + conditionalPanel('input.chSel2 == "Volcano"', + tags$b('In this section, we will use an embedded dataset named Volcano. It is a matrix containing 87 rows and 61 columns.'), + br(), + br(), + tags$strong('R Code: '), + uiOutput('CPCode1'), #volcano code + br(), + plotlyOutput('plotly3') #volcano plot + ), + conditionalPanel('input.chSel2 == "Protein-Protein Interaction"', + plotOutput('proteinInt') + ) + + ), + + conditionalPanel('input.chSel == "Heatmaps"', + conditionalPanel('input.heat1 == "Volcano"', + tags$strong('R Code: '), + uiOutput('CPCode2'), + br(), + plotlyOutput('plotly4') + ), + conditionalPanel('input.heat1 == "Cars"', + plotlyOutput('cars1') + ) + ) + ) + ) + ) + ) + ) +), +#######Referencees Tab ############### +tabItem( + tabName = "References", + withMathJax(), + h2("References"), + + p('The Protein-Protein Interaction Dataset is from the Warwick University - Molecular Organisation and Assembly in Cells.'), + + p(class = "hangingindent", + "Attali, D. (2020). + shinyjs: Easily Improve the User Experience of Your Shiny Apps in Seconds, R package. + Available from https://CRAN.R-project.org/package=shinyjs"), + p(class = "hangingindent", + "Chang, W. and Borges Ribeiro, B. (2018), + shinydashboard: Create Dashboards with 'Shiny', R package. + Available from https://CRAN.R-project.org/package=shinydashboard"), + p(class = "hangingindent", + "Chang, W., Cheng, J., Allaire, J., Xie, Y., and MchPherson, J. (2020), + shiny: Web Application Framework for R, R package. + Available from https://CRAN.R-project.org/package=shiny"), + p(class = "hangingindent", + "Bailey, E. (2015). + shinyBS: Twitter Bootstrap Components for Shiny, R package. + Available from https://CRAN.R-project.org/package=shinyBS"), + p(class = "hangingindent", + "Perrier, V., Meyer, F., and Granjon, D. (2020). + shinyWidgets: Custom Inputs Widgets for Shiny, R package. + Available from https://CRAN.R-project.org/package=shinyWidgets"), + p(class = "hangingindent", + "Sievert, C. (2020). + plotly: Interactive Web-Based Data Visualization with R, plotly, and + shiny. Chapman and Hall/CRC Florida, 2020." + ), + p(class = "hangingindent", + "Wickham, H., ggplot2: Elegant Graphics for Data Analysis, R package. + Springer-Verlag New York, 2016." + ), + p(class = "hangingindent", + "Nijs, V., Fang, F., Trestle Technology, LLC and Allen, J. (2019). + shinyAce: Ace Editor Bindings for Shiny, R package. + Available from https://CRAN.R-project.org/package=shinyAce" + ), + p(class = "hangingindent", + "Sali, A. and Attali D. (2020). shinycssloaders: Add CSS Loading + Animations to 'shiny' Outputs, R package. + https://CRAN.R-project.org/package=shinycssloaders" + ), + p(class = "hangingindent", + "Carey R. (2019). + rlocker: Learning Locker for Shiny, R package. + Available from https://github.com/rpc5102/rlocker"), + p(class = "hangingindent", + "Carey, R. and Hatfield, N. (2020). boastUtils: BOAST Utilities. R + package version 0.1.4. + https://github.com/EducationShinyAppTeam/boastUtils" + ) + + +) + + ) +))) + +server <- function(input, output, session) { + # Initialize Learning Locker connection + connection <- rlocker::connect( + session, + list( + base_url = "https://learning-locker.stat.vmhost.psu.edu/", + auth = "Basic ZDQ2OTNhZWZhN2Q0ODRhYTU4OTFmOTlhNWE1YzBkMjQxMjFmMGZiZjo4N2IwYzc3Mjc1MzU3MWZkMzc1ZDliY2YzOTNjMGZiNzcxOThiYWU2", + agent = rlocker::createAgent() + ) + ) + + # Setup demo app and user. + currentUser <- + connection$agent + + if (connection$status != 200) { + warning(paste(connection$status, "\nTry checking your auth token.")) + } + + ##############end######### + output$Previewcar <- + renderTable({ + head(cars, 4) + }, striped = TRUE, hover = TRUE, bordered = TRUE, spacing = 'xs') + + output$Previewtree <- + renderTable({ + head(trees, 4) + }, striped = TRUE, hover = TRUE, bordered = TRUE, spacing = 'xs') + + output$Previewiris <- + renderTable({ + head(iris, 4) + }, striped = TRUE, hover = TRUE, bordered = TRUE, spacing = 'xs') + + ###KNITR + observeEvent(input$eval, { + withBusyIndicatorServer("eval", { + output$knitDoc <- renderUI({ + return(isolate(HTML( + knit2html( + text = input$rmd, + fragment.only = TRUE, + quiet = FALSE + ) + ))) + }) + + output$output <- renderPrint({ + return(isolate(eval(parse(text = input$code)))) + }) + }) + }) + + output$knitDoc <- renderUI({ + input$eval + return(isolate(HTML( + knit2html( + text = input$rmd, + fragment.only = TRUE, + quiet = FALSE + ) + ))) + }) + + output$output <- renderPrint({ + input$eval + return(isolate(eval(parse(text = input$code)))) + }) + + observeEvent(input$info0, { + sendSweetAlert( + session = session, + title = "Instructions:", + text = "Move the sliders or select from the dropdown menus and view the R code that produces the results.", + type = NULL + ) + }) + observeEvent(input$info, { + sendSweetAlert( + session = session, + title = "Instructions:", + text = "Select the variables or the dataset to be used. Select answers for the exercise.", + type = NULL + ) + }) + observeEvent(input$go2, { + updateTabItems(session, 'tabs', 'VisualOne') + }) + + observeEvent(input$next2, { + updateTabsetPanel(session, 'VisualOne', selected = 'panel2') + }) + + ############ Data Visualization ############ + ###########One Single Variable Plot############## + output$oneDensity <- + renderCachedPlot({ + if (input$dataset == 'cars') { + if (input$carsVariable == 'speed') { + if (input$plotType == 'plot') { + plot(density(cars$speed), + main = "Density Plot", + xlab = input$carsVariable) + } + else if (input$plotType == 'ggplot') { + ggplot(aes(speed), data = cars) + + geom_density(color = "darkblue", + fill = "lightblue", + alpha = 0.4) + + ggtitle('Density Plot') + } + } + else if (input$carsVariable == 'dist') { + if (input$plotType == 'plot') { + plot(density(cars$dist), + main = "Density Plot", + xlab = input$carsVariable) + } + else if (input$plotType == 'ggplot') { + ggplot(aes(dist), data = cars) + + geom_density(color = "darkblue", + fill = "lightblue", + alpha = 0.4) + + ggtitle('Density Plot') + } + } + } + else if (input$dataset == 'trees') { + if (input$treesVariable == 'Girth') { + if (input$plotType == 'plot') { + plot(density(trees$Girth), + main = "Density Plot", + xlab = input$carsVariable) + } + else if (input$plotType == 'ggplot') { + ggplot(aes(Girth), data = trees) + + geom_density(color = "darkblue", + fill = "lightblue", + alpha = 0.4) + + ggtitle('Density Plot') + } + } + else if (input$treesVariable == 'Height') { + if (input$plotType == 'plot') { + plot(density(trees$Height), + main = "Density Plot", + xlab = input$carsVariable) + } + else if (input$plotType == 'ggplot') { + ggplot(aes(Height), data = trees) + + geom_density(color = "darkblue", + fill = "lightblue", + alpha = 0.4) + + ggtitle('Density Plot') + } + + } + else if (input$treesVariable == 'Volume') { + if (input$plotType == 'plot') { + plot(density(trees$Volume), + main = "Density Plot", + xlab = input$carsVariable) + } + else if (input$plotType == 'ggplot') { + ggplot(aes(Volume), data = trees) + + geom_density(color = "darkblue", + fill = "lightblue", + alpha = 0.4) + + ggtitle('Density Plot') + } + + } + } + }, + cacheKeyExpr = { + list(input$dataset, + input$carsVariable, + input$plotType, + input$treesVariable) + }) + + output$onehist <- renderCachedPlot({ + if (input$dataset == 'cars') { + if (input$carsVariable == 'speed') { + if (input$plotType == 'plot') { + hist(cars$speed, + main = "Histogram", + xlab = input$carsVariable) + } + else if (input$plotType == 'ggplot') { + ggplot(aes(speed), data = cars) + + geom_histogram(color = "darkblue", + fill = "lightblue", + alpha = 0.4) + + ggtitle("Histogram") + } + } + else if (input$carsVariable == 'dist') { + if (input$plotType == 'plot') { + hist(cars$dist, + main = "Histogram", + xlab = input$carsVariable) + } + else if (input$plotType == 'ggplot') { + ggplot(aes(dist), data = cars) + + geom_histogram(color = "darkblue", + fill = "lightblue", + alpha = 0.4) + + ggtitle("Histogram") + } + + } + } + else if (input$dataset == 'trees') { + if (input$treesVariable == 'Girth') { + if (input$plotType == 'plot') { + hist(trees$Girth, + main = "Histogram", + xlab = input$carsVariable) + } + else if (input$plotType == 'ggplot') { + ggplot(aes(Girth), data = trees) + + geom_histogram(color = "darkblue", + fill = "lightblue", + alpha = 0.4) + + ggtitle("Histogram") + } + } + else if (input$treesVariable == 'Height') { + if (input$plotType == 'plot') { + hist(trees$Height, + main = "Histogram", + xlab = input$carsVariable) + } + else if (input$plotType == 'ggplot') { + ggplot(aes(Height), data = trees) + + geom_histogram(color = "darkblue", + fill = "lightblue", + alpha = 0.4) + + ggtitle("Histogram") + } + } + else if (input$treesVariable == 'Volume') { + if (input$plotType == 'plot') { + hist(trees$Volume, + main = "Histogram", + xlab = input$carsVariable) + } + else if (input$plotType == 'ggplot') { + ggplot(aes(Volume), data = trees) + + geom_histogram(color = "darkblue", + fill = "lightblue", + alpha = 0.4) + + ggtitle("Histogram") + } + + } + } + }, + cacheKeyExpr = { + list(input$dataset, + input$plotType, + input$carsVariable, + input$treesVariable) + }) + + output$onebar <- + renderCachedPlot({ + if (input$dataset == 'cars') { + if (input$carsVariable == 'speed') { + if (input$plotType == 'plot') { + barplot(cars$speed, + main = "Bar Plot", + xlab = input$carsVariable) + } + else if (input$plotType == 'ggplot') { + ggplot(aes(speed), data = cars) + + geom_freqpoly(bins = 30) + + geom_area( + stat = "bin", + bins = 30, + color = "darkblue", + fill = "lightblue", + alpha = 0.4 + ) + + ggtitle('Frequency polygon') + } + } + else if (input$carsVariable == 'dist') { + if (input$plotType == 'plot') { + barplot(cars$dist, + main = "Bar Plot", + xlab = input$carsVariable) + } + else if (input$plotType == 'ggplot') { + ggplot(aes(dist), data = cars) + + geom_freqpoly(bins = 30) + + geom_area( + stat = "bin", + bins = 30, + color = "darkblue", + fill = "lightblue", + alpha = 0.4 + ) + + ggtitle('Frequency polygon') + } + + } + } + else if (input$dataset == 'trees') { + if (input$treesVariable == 'Girth') { + if (input$plotType == 'plot') { + barplot(trees$Girth, + main = "Bar Plot", + xlab = input$carsVariable) + } + else if (input$plotType == 'ggplot') { + ggplot(aes(Girth), data = trees) + + geom_freqpoly(bins = 30) + + geom_area( + stat = "bin", + bins = 30, + color = "darkblue", + fill = "lightblue", + alpha = 0.4 + ) + + ggtitle('Frequency polygon') + } + } + else if (input$treesVariable == 'Height') { + if (input$plotType == 'plot') { + barplot(trees$Height, + main = "Bar Plot", + xlab = input$carsVariable) + } + else if (input$plotType == 'ggplot') { + ggplot(aes(Height), data = trees) + + geom_freqpoly(bins = 30) + + geom_area( + stat = "bin", + bins = 30, + color = "darkblue", + fill = "lightblue", + alpha = 0.4 + ) + + ggtitle('Frequency polygon') + } + + } + else if (input$treesVariable == 'Volume') { + if (input$plotType == 'plot') { + barplot(trees$Volume, + main = "Bar Plot", + xlab = input$carsVariable) + } + else if (input$plotType == 'ggplot') { + ggplot(aes(Volume), data = trees) + + geom_freqpoly(bins = 30) + + geom_area( + stat = "bin", + bins = 30, + color = "darkblue", + fill = "lightblue", + alpha = 0.4 + ) + + ggtitle('Frequency polygon') + } + } + } + }, cacheKeyExpr = { + list(input$dataset, + input$plotType, + input$carsVariable, + input$treesVariable) + }) + + output$oneqq <- + renderCachedPlot({ + if (input$dataset == 'cars') { + if (input$carsVariable == 'speed') { + if (input$plotType == 'plot') { + qqnorm(cars$speed) + qqline(cars$speed, col = 'red') + } + else if (input$plotType == 'ggplot') { + ggplot(aes(sample = speed), data = cars) + + stat_qq(color = "darkblue", + fill = "lightblue", + alpha = 0.4) + + stat_qq_line(color = 'red') + } + } + else if (input$carsVariable == 'dist') { + if (input$plotType == 'plot') { + qqnorm(cars$dist) + qqline(cars$dist, col = 'red') + } + else if (input$plotType == 'ggplot') { + ggplot(aes(sample = dist), data = cars) + + stat_qq(color = "darkblue", + fill = "lightblue", + alpha = 0.4) + + stat_qq_line(color = 'red') + } + } + } + else if (input$dataset == 'trees') { + if (input$treesVariable == 'Girth') { + if (input$plotType == 'plot') { + qqnorm(trees$Girth) + qqline(trees$Girth, col = 'red') + } + else if (input$plotType == 'ggplot') { + ggplot(aes(sample = Girth), data = trees) + + stat_qq(color = "darkblue", + fill = "lightblue", + alpha = 0.4) + + stat_qq_line(color = 'red') + } + } + else if (input$treesVariable == 'Height') { + if (input$plotType == 'plot') { + qqnorm(trees$Height) + qqline(trees$Height, col = 'red') + } + else if (input$plotType == 'ggplot') { + ggplot(aes(sample = Height), data = trees) + + stat_qq(color = "darkblue", + fill = "lightblue", + alpha = 0.4) + + stat_qq_line(color = 'red') + } + } + else if (input$treesVariable == 'Volume') { + if (input$plotType == 'plot') { + qqnorm(trees$Volume) + qqline(trees$Volume, col = 'red') + } + else if (input$plotType == 'ggplot') { + ggplot(aes(sample = Volume), data = trees) + + stat_qq(color = "darkblue", + fill = "lightblue", + alpha = 0.4) + + stat_qq_line(color = 'red') + } + } + } + }, cacheKeyExpr = { + list(input$dataset, + input$plotType, + input$carsVariable, + input$treesVariable) + }) + + output$DensityoneCode <- renderText({ + if (input$dataset == 'cars') { + if (input$plotType == 'plot') { + paste( + 'R Code:', + 'plot(density(', + input$dataset, + '$', + input$carsVariable, + '))', + seq = '' + ) + } + else if (input$plotType == 'ggplot') { + paste( + 'R Code:', + "ggplot(aes(", + input$carsVariable, + "), data=cars)+ + geom_density(color='darkblue', fill='lightblue', alpha=0.4)+ + ggtitle('Density Plot')", + seq = '' + ) + } + } + else{ + if (input$plotType == 'plot') { + paste( + 'R Code:', + 'plot(density(', + input$dataset, + '$', + input$treesVariable, + ')', + seq = '' + ) + } + else if (input$plotType == 'ggplot') { + paste( + 'R Code:', + "ggplot(aes(", + input$treesVariable, + "), data=trees)+ + geom_density(color='darkblue', fill='lightblue', alpha=0.4)+ + ggtitle('Density Plot')", + seq = '' + ) + } + } + }) + + output$HistogramoneCode <- renderText({ + if (input$dataset == 'cars') { + if (input$plotType == 'plot') { + paste('R Code:', + 'hist(', + input$dataset, + '$', + input$carsVariable, + ')', + seq = '') + } + else{ + paste( + 'R Code:', + "ggplot(aes(", + input$carsVariable, + "), data=cars)+ + geom_histogram(color='darkblue', fill='lightblue', alpha=0.4)+ + ggtitle('Histogram')", + seq = '' + ) + } + } + else{ + if (input$plotType == 'plot') { + paste('R Code:', + 'hist(', + input$dataset, + '$', + input$treesVariable, + ')', + seq = '') + } + else{ + paste( + 'R Code:', + "ggplot(aes(", + input$treesVariable, + "), data=trees)+ + geom_histogram(color='darkblue', fill='lightblue', alpha=0.4)+ + ggtitle('Histogram')", + seq = '' + ) + } + } + }) + + output$BarCode <- renderText({ + if (input$dataset == 'cars') { + if (input$plotType == 'plot') { + paste('R Code:', + 'barplot(', + input$dataset, + '$', + input$carsVariable, + ')', + seq = '') + } + else{ + paste( + 'R Code:', + "ggplot(aes(", + input$carsVariable, + "), data=cars)+ + geom_freqpoly(bins = 30)+ + geom_area(stat = 'bin', bins = 30, + color='darkblue', fill='lightblue', alpha=0.4)+ + ggtitle('Frequency polygon')" + ) + } + } + else{ + if (input$plotType == 'plot') { + paste('R Code:', + 'barplot(', + input$dataset, + '$', + input$treesVariable, + ')', + seq = '') + } + else{ + paste( + 'R Code:', + "ggplot(aes(", + input$treesVariable, + "), data=trees)+ + geom_freqpoly(bins = 30)+ + geom_area(stat = 'bin', bins = 30, + color='darkblue', fill='lightblue', alpha=0.4)+ + ggtitle('Frequency polygon')" + ) + } + } + }) + + output$qqCode <- renderText({ + if (input$dataset == 'cars') { + if (input$plotType == 'plot') { + paste0( + 'R Code: ', + 'qqnorm(', + input$dataset, + '$', + input$carsVariable, + ')', + '\n qqline(', + input$dataset, + '$', + input$carsVariable, + ')', + seq = '' + ) + } + else{ + paste( + 'R Code:', + "ggplot(aes(sample=", + input$carsVariable, + "), data=cars)+ + stat_qq(color='darkblue', fill='lightblue', alpha=0.4)+ + stat_qq_line(color='red')", + seq = '' + ) + } + } + else{ + if (input$plotType == 'plot') { + paste0( + 'R Code:', + 'qqnorm(', + input$dataset, + '$', + input$treesVariable, + ')', + 'qqline(', + input$dataset, + '$', + input$treesVariable, + ')', + seq = '' + ) + } + else{ + paste( + 'R Code:', + "ggplot(aes(sample=", + input$treesVariable, + "), data=trees)+ + stat_qq(color='darkblue', fill='lightblue', alpha=0.4)+ + stat_qq_line(color='red')", + seq = '' + ) + } + + } + }) + ###########Two Variables######## + output$twoscatter <- renderCachedPlot({ + if (input$continuous1 == 'Sepal.Length') { + if (input$continuous2 == 'Petal.Length') { + ggplot(aes(Sepal.Length, Petal.Length), data = iris) + + geom_point(aes(colour = factor(Species))) + + geom_smooth(aes(colour = factor(Species)), + linetype = 'twodash', + size = 0.8) + + ggtitle("Scatter Plot") + } + else if (input$continuous2 == 'Petal.Width') { + ggplot(aes(Sepal.Length, Petal.Width), data = iris) + + geom_point(aes(colour = factor(Species))) + + geom_smooth(aes(colour = factor(Species)), + linetype = 'twodash', + size = 0.8) + + ggtitle("Scatter Plot") + } + } + else if (input$continuous1 == 'Sepal.Width') { + if (input$continuous2 == 'Petal.Length') { + ggplot(aes(Sepal.Width, Petal.Length), data = iris) + + geom_point(aes(colour = factor(Species))) + + geom_smooth(aes(colour = factor(Species)), + linetype = 'twodash', + size = 0.8) + + ggtitle("Scatter Plot") + } + else if (input$continuous2 == 'Petal.Width') { + ggplot(aes(Sepal.Width, Petal.Width), data = iris) + + geom_point(aes(colour = factor(Species))) + + geom_smooth(aes(colour = factor(Species)), + linetype = 'twodash', + size = 0.8) + + ggtitle("Scatter Plot") + } + } + }, cacheKeyExpr = { + list(input$continuous1, input$continuous2) + }) + + + output$logTransformation <- renderCachedPlot({ + if (input$continuous1 == 'Sepal.Length') { + if (input$continuous2 == 'Petal.Length') { + ggplot(aes(Sepal.Length, Petal.Length), data = iris) + + geom_point(aes(colour = factor(Species))) + + coord_trans(x = "log2", y = "log2") + + ggtitle("Log Transformation") + #sunflowerplot(Sepal.Length~Petal.Length, data=iris, main="SunflowerPlot") + } + else if (input$continuous2 == 'Petal.Width') { + ggplot(aes(Sepal.Length, Petal.Width), data = iris) + + geom_point(aes(colour = factor(Species))) + + coord_trans(x = "log2", y = "log2") + + ggtitle("Log Transformation") + #sunflowerplot(Sepal.Length~Petal.Width, data=iris, main="SunflowerPlot") + } + } + else if (input$continuous1 == 'Sepal.Width') { + if (input$continuous2 == 'Petal.Length') { + ggplot(aes(Sepal.Width, Petal.Length), data = iris) + + geom_point(aes(colour = factor(Species))) + + coord_trans(x = "log2", y = "log2") + + ggtitle("Log Transformation") + } + else if (input$continuous2 == 'Petal.Width') { + ggplot(aes(Sepal.Width, Petal.Width), data = iris) + + geom_point(aes(colour = factor(Species))) + + coord_trans(x = "log2", y = "log2") + + ggtitle("Log Transformation") + #sunflowerplot(Sepal.Width~Petal.Width, data=iris, main="SunflowerPlot") + } + } + }, cacheKeyExpr = { + list(input$continuous1, input$continuous2) + }) + + output$twobar <- renderCachedPlot({ + if (input$continuous1 == 'Sepal.Length') { + if (input$continuous2 == 'Petal.Length') { + ggplot(data = iris, + aes( + x = Sepal.Length, + y = Petal.Length, + fill = factor(Species) + )) + + geom_bar(stat = "identity") + + ggtitle('Bar Plot') + } + else if (input$continuous2 == 'Petal.Width') { + ggplot(data = iris, + aes( + x = Sepal.Length, + y = Petal.Width, + fill = factor(Species) + )) + + geom_bar(stat = "identity") + + ggtitle('Bar Plot') + } + } + else if (input$continuous1 == 'Sepal.Width') { + if (input$continuous2 == 'Petal.Length') { + ggplot(data = iris, + aes( + x = Sepal.Width, + y = Petal.Length, + fill = factor(Species) + )) + + geom_bar(stat = "identity") + + ggtitle('Bar Plot') + } + else if (input$continuous2 == 'Petal.Width') { + ggplot(data = iris, + aes( + x = Sepal.Width, + y = Petal.Width, + fill = factor(Species) + )) + + geom_bar(stat = "identity") + + ggtitle('Bar Plot') + } + } + }, cacheKeyExpr = { + list(input$continuous1, input$continuous2) + }) + + + output$twobox <- renderCachedPlot({ + if (input$continuous1 == 'Sepal.Length') { + if (input$continuous2 == 'Petal.Length') { + ggplot(data = iris, + aes( + x = Sepal.Length, + y = Petal.Length, + color = Species + )) + + geom_boxplot() + + ggtitle('Boxplot') + } + else if (input$continuous2 == 'Petal.Width') { + ggplot(data = iris, + aes( + x = Sepal.Length, + y = Petal.Width, + color = Species + )) + + geom_boxplot() + + ggtitle('Boxplot') + } + } + else if (input$continuous1 == 'Sepal.Width') { + if (input$continuous2 == 'Petal.Length') { + ggplot(data = iris, + aes( + x = Sepal.Width, + y = Petal.Length, + color = Species + )) + + geom_boxplot() + + ggtitle('Boxplot') + } + else if (input$continuous2 == 'Petal.Width') { + ggplot(data = iris, + aes( + x = Sepal.Width, + y = Petal.Width, + color = Species + )) + + geom_boxplot() + + ggtitle('Boxplot') + } + } + }, cacheKeyExpr = { + list(input$continuous1, input$continuous2) + }) + + output$twoscattercode <- renderText({ + paste( + 'R Code:', + "ggplot(aes(", + input$continuous1, + ',', + input$continuous2, + "), data=iris)+ + geom_point(aes(colour = factor(Species)))+ + geom_smooth(aes(colour = factor(Species)), linetype='twodash', size=0.8)+ + ggtitle('Scatter Plot')", + seq = '' + ) + }) + + output$logTransformationCode <- renderText({ + paste( + 'R Code:', + "ggplot(aes(", + input$continuous1, + ',', + input$continuous2, + "), data=iris)+ + geom_point(aes(colour = factor(Species)))+ + coord_trans(x='log2', y='log2')+ + ggtitle('Log Transformation')", + seq = '' + ) + }) + + output$twobarcode <- renderText({ + paste( + 'R Code:', + "ggplot(data=iris, aes(", + input$continuous1, + ',', + input$continuous2, + "fill=factor(Species)))+ + geom_bar(stat='identity')+ + ggtitle('Bar Plot')", + seq = '' + ) + }) + + output$twoboxcode <- renderText({ + paste( + 'R Code:', + "ggplot(data=iris, aes(", + input$continuous1, + ',', + input$continuous2, + "color=Species)) + + geom_boxplot()+ + ggtitle('Boxplot')", + seq = '' + ) + }) + + + ###########Exercises Part################### + # observeEvent(input$submit, { + # updateButton(session, "nextq", disabled = FALSE) + # }) + # + # observeEvent(input$submit, { + # updateButton(session, "submit", disabled = TRUE) + # }) + + observeEvent(input$nextq, { + # updateButton(session, "submit", disabled = FALSE) + # updateButton(session, "nextq", disabled = TRUE) + updateSelectInput(session, + "answer", + "pick an answer from below", + c("", "A", "B", "C")) + output$mark <- renderUI({ + img(src = NULL, width = 30) + }) + }) + + + #### question bank #### + value <- reactiveValues(index = 1, + mistake = 0, + correct = 0) + ans <- as.matrix(bank[1:14, 6]) + #ans <- data.frame(ans) + index_list <- reactiveValues(list = sample(2:14, 10, replace = FALSE)) + + observeEvent(input$nextq, { + value$answerbox <- value$index + index_list$list = index_list$list[-1] + value$index <- index_list$list[1] + value$answerbox <- value$index + + updateButton(session, "nextq", disabled = TRUE) + updateButton(session, "submit", disabled = FALSE) + }) + + output$question <- renderUI({ + h4(bank[value$index, 2]) + # radioButtons(inputId = bank[value$index,1], label= bank[value$index, 2], + # choiceNames=c(bank[value$index, 3], bank[value$index, 4], bank[value$index, 5]), + # choiceValues = c("A", "B", "C")) + }) + + output$options <- renderUI({ + str1 <- paste("A.", bank[value$index, 3]) + str2 <- paste("B.", bank[value$index, 4]) + str3 <- paste("C.", bank[value$index, 5]) + HTML(paste(str1, str2, str3, sep = '
')) + }) + + + observeEvent(input$answer, { + req(input$answer, input$answer != '') + answer <- isolate(input$answer) + interacted_statement <- rlocker::createStatement(list( + verb = list(display = "interacted"), + object = list( + id = paste0(getCurrentAddress(session), "#", value$index), + name = paste('Question', value$index), + description = bank[value$index, 2] + + ), + result = list( + success = NA, + response = paste(getResponseText(value$index, answer)) + ) + )) + + # Store statement in locker and return status + status <- rlocker::store(session, interacted_statement) + + print(interacted_statement) # remove me + print(status) # remove me + }) + + + getResponseText <- function(index, answer) { + if (answer == 'A') { + key = 3 + } else if (answer == 'B') { + key = 4 + } else { + key = 5 + } + return(bank[index, key]) + } + + observeEvent(input$submit, { + if (length(index_list$list) == 1) { + updateButton(session, "nextq", disabled = TRUE) + updateButton(session, "submit", disabled = TRUE) + updateButton(session, "reset", disabled = FALSE) + } + else{ + updateButton(session, "nextq", disabled = FALSE) + updateButton(session, "submit", disabled = TRUE) + updateButton(session, "reset", disabled = FALSE) + } + + # output$progress<-renderUI({ + # paste("You are currently on problem", 11-length(index_list$list), "/10") + # }) + + answer <- isolate(input$answer) + + statement <- rlocker::createStatement(list( + verb = list(display = "answered"), + object = list( + id = paste0(getCurrentAddress(session), "#", value$index), + name = paste('Question', value$index), + description = bank[value$index, 2] + ), + result = list( + success = any(answer == ans[value$index, 1]), + response = paste(getResponseText(value$index, answer)) + ) + )) + + # Store statement in locker and return status + status <- rlocker::store(session, statement) + + print(statement) # remove me + print(status) # remove me + + output$mark <- renderUI({ + if (any(answer == ans[value$index, 1])) { + img(src = "correct.png", width = 30) + } + else{ + ig <- img(src = "incorrect.png", width = 30) + w <- + paste("You picked", answer, ", The correct answer is", ans[value$index, 1]) + HTML(paste(ig, w), sep = ' ') + } + }) + }) + + observeEvent(input$reset, { + updateButton(session, "submit", disabled = FALSE) + updateButton(session, "reset", disable = TRUE) + updateSelectInput(session, + "answer", + "pick an answer from below", + c("", "A", "B", "C")) + index_list$list <- + c(index_list$list, sample(2:14, 10, replace = FALSE)) + value$index <- 1 + value$answerbox = value$index + ans <- as.matrix(bank[1:14, 6]) + output$mark <- renderUI({ + img(src = NULL, width = 30) + }) + }) + + ###### Maps ###### + #a. usMap + output$usMapOut1 <- renderCachedPlot({ + USArrests2 <- USArrests %>% mutate(state = row.names(.)) + if (input$usMap1 == 'borders' & input$usMap2 == 'compact') { + mUSMap( + USArrests2, + key = "state", + fill = "UrbanPop", + plot = 'borders', + style = 'compact' + ) + } + else if (input$usMap1 == 'borders' & input$usMap2 == 'real') { + mUSMap( + USArrests2, + key = "state", + fill = "UrbanPop", + plot = 'borders', + style = 'real' + ) + } + else if (input$usMap1 == 'frame' & input$usMap2 == 'compact') { + mUSMap( + USArrests2, + key = "state", + fill = "UrbanPop", + plot = 'frame', + style = 'compact' + ) + } + else { + mUSMap( + USArrests2, + key = "state", + fill = "UrbanPop", + plot = 'frame', + style = 'real' + ) + } + }, cacheKeyExpr = { + list(input$usMap1, input$usMap2) + }) + + output$usMapOut2 <- renderUI ({ + tags$code( + 'mUSMap(USArrests2, key = "state", fill = "UrbanPop", plot = "', + input$usMap1, + '", style = "', + input$usMap2, + '")' + ) + }) + + #plotly US Map - code + output$plotlyUScode <- renderUI ({ + tags$code('p <- plot_geo(df, locationmode = "USA-states", sizes = c(1, 250))') + }) + + #plotly US Map + output$plotlyUSMap <- renderPlotly({ + df <- + read.csv( + 'https://raw.githubusercontent.com/plotly/datasets/master/2014_us_cities.csv' + ) + df$q <- with(df, cut(pop, quantile(pop))) + levels(df$q) <- + paste(c("1st", "2nd", "3rd", "4th", "5th"), "Quantile") + df$q <- as.ordered(df$q) + + g <- list( + scope = 'usa', + projection = list(type = 'albers usa'), + showland = TRUE, + landcolor = toRGB("gray85"), + subunitwidth = 1, + countrywidth = 1, + subunitcolor = toRGB("white"), + countrycolor = toRGB("white") + ) + + p <- + plot_geo(df, locationmode = 'USA-states', sizes = c(1, 250)) %>% + add_markers( + x = ~ lon, + y = ~ lat, + size = ~ pop, + color = ~ q, + hoverinfo = "text", + text = ~ paste(df$name, "
", df$pop / 1e6, " million") + ) %>% + layout(title = '2014 US city populations
(Click legend to toggle)', geo = g) + g + p + }) + + + ###### 3D Plots ###### + #a. Normal Simulation via Plotly + output$plotly1 <- renderPlotly ({ + plot_ly( + x = rnorm(input$Exsel1), + y = rnorm(input$Exsel1), + z = rnorm(input$Exsel1), + type = 'scatter3d', + mode = 'markers' + ) + }) + + output$ExCode <- renderUI ({ + tags$code( + 'plot_ly(x = rnorm(', + input$Exsel1, + '), y = rnorm(', + input$Exsel1, + '), z = rnorm(', + input$Exsel1, + '), type = "scatter3d", mode = "markers")' + ) + }) + + + output$hover <- renderPrint({ + dataHover <- event_data("plotly_hover") + if (is.null(dataHover)) { + "Hover events appear here (unhover to clear)" + } + else { + dataHover + } + }) + + output$click <- renderPrint({ + dataClick <- event_data("plotly_click") + if (is.null(dataClick)) { + "Click events appear here (double-click to clear)" + } + else { + dataClick + } + }) + + # output$ExCode <- renderUI ({ + # if (input$Exsel == 'Scatter Plot') { + # tags$code('plot_ly(x = rnorm(', input$Exsel1, '), y = rnorm(', input$Exsel1, '), z = rnorm(', input$Exsel1, '), type = "scatter3d", mode = "markers")') + # } + # else if (input$Exsel == 'Line Plot') { + # tags$code('plot_ly(x = rnorm(', input$Exsel1, '), y = rnorm(', input$Exsel1, '), z = rnorm(', input$Exsel1, '), type = "scatter3d", mode = "lines")') + # } + # else { + # tags$code('plot_ly(x = rnorm(', input$Exsel1, '), y = rnorm(', input$Exsel1, '), z = rnorm(', input$Exsel1, '), type = "mesh3d", mode = "markers")') + # } + # }) + + #b. Basic Scatter Plot + output$basicRcode <- renderUI ({ + tags$code( + 'scatter3D(x, y, z, clab = c("Sepal", "Width (cm)"), xlab = input$basicX, ylab = input$basicY, zlab = input$basicZ)' + ) + }) + + output$bspTable <- renderTable ({ + head(iris) + }) + + output$bspOut1 <- renderPlot({ + x <- iris[, input$basicX] + y <- iris[, input$basicY] + z <- iris[, input$basicZ] + scatter3D( + x, + y, + z, + clab = c("Sepal", "Width (cm)"), + xlab = input$basicX, + ylab = input$basicY, + zlab = input$basicZ + ) + }) + + # #c. + # output$bspTableCopy <- renderTable ({ + # head(iris) + # }) + # + # output$bspOut2 <- renderPlot ({ + # scatter3D(x, y, z, bty = "g", pch = 18, + # col.var = as.integer(iris$Species), + # col = c("#1B9E77", "#D95F02", "#7570B3"), + # pch = 18, ticktype = "detailed", + # colkey = list(at = c(2, 3, 4), side = 1, + # addlines = TRUE, length = 0.5, width = 0.5, + # labels = c("setosa", "versicolor", "virginica")) ) + # }) + + # #d. 3D Plots with Confidence Intervals + # output$CIOut <- renderPlot ({ + # x <- iris[, input$CIX] + # y <- iris[, input$CIY] + # z <- iris[, input$CIZ] + # CI <- list(z = matrix(nrow = length(x), + # data = rep(0.1, 2*length(x)))) + # scatter3D(x, y, z, phi = 0, bty = "g", col = gg.col(100), + # pch = 18, CI = CI) + # }) + + #e. 3D Texts Plot + output$textRcode <- renderUI ({ + tags$code( + 'with(USArrests, text3D(Murder, Assault, Rape, + labels = rownames(USArrests), colvar = UrbanPop, + col = gg.col(100), theta = 60, phi = 20, + xlab = "Murder", ylab = "Assault", zlab = "Rape", + main = "USA arrests", cex = 0.6, + bty = "g", ticktype = "detailed", d = 2, + clab = c("Urban","Pop"), adj = 0.5, font = 2))' + ) + }) + + output$textTable <- renderTable ({ + head(USArrests) + }) + + output$textOut <- renderPlot ({ + data(USArrests) + with( + USArrests, + text3D( + Murder, + Assault, + Rape, + labels = rownames(USArrests), + colvar = UrbanPop, + col = gg.col(100), + theta = 60, + phi = 20, + xlab = "Murder", + ylab = "Assault", + zlab = "Rape", + main = "USA arrests", + cex = 0.6, + bty = "g", + ticktype = "detailed", + d = 2, + clab = c("Urban", "Pop"), + adj = 0.5, + font = 2 + ) + ) + }) + + ###### 2D Line Plots ###### + output$plotly2 <- renderPlotly ({ + trace_0 <- + rnorm(as.numeric(input$LPsel1), mean = as.numeric(input$LPnum1)) + trace_1 <- + rnorm(as.numeric(input$LPsel1), mean = as.numeric(input$LPnum2)) + x = c(1:as.numeric(input$LPsel1)) + data <- data.frame(x, trace_0, trace_1) + if (input$LPSEL1 == 'Lines' & input$LPSEL2 == 'Lines') { + plot_ly( + data, + x = ~ x, + y = ~ trace_0, + name = 'trace 0', + type = 'scatter', + mode = 'lines' + ) %>% + add_trace(y = ~ trace_1, + name = 'trace 1', + mode = 'lines') + } + else if (input$LPSEL1 == 'Markers' & + input$LPSEL2 == 'Markers') { + plot_ly( + data, + x = ~ x, + y = ~ trace_0, + name = 'trace 0', + type = 'scatter', + mode = 'markers' + ) %>% + add_trace(y = ~ trace_1, + name = 'trace 1', + mode = 'markers') + } + else if (input$LPSEL1 == 'Lines' & input$LPSEL2 == 'Markers') { + plot_ly( + data, + x = ~ x, + y = ~ trace_0, + name = 'trace 0', + type = 'scatter', + mode = 'lines' + ) %>% + add_trace(y = ~ trace_1, + name = 'trace 1', + mode = 'markers') + } + else { + plot_ly( + data, + x = ~ x, + y = ~ trace_0, + name = 'trace 0', + type = 'scatter', + mode = 'markers' + ) %>% + add_trace(y = ~ trace_1, + name = 'trace 1', + mode = 'lines') + } + }) + + output$LPCode <- renderUI ({ + tags$code( + 'plot_ly(data, x = ~x, y = ~trace_0, name = "trace 0", type = "scatter", mode = "lines") %>% + add_trace(y = ~trace_1, name = "trace 1", mode = "markers + lines")' + ) + }) + + ###### Contour Plots and Heatmaps ###### + #contour plot + output$proteinInt <- renderPlot ({ + potentials <- + as.matrix(read.table( + "MULTIPOT_lu.txt", + row.names = 1, + header = TRUE + )) + matrix.axes <- function(data) { + # Do the rows, las=2 for text perpendicular to the axis + x <- (1:dim(data)[1] - 1) / (dim(data)[1] - 1) + + axis( + side = 1, + at = x, + labels = rownames(data), + las = 2 + ) + + # Do the columns + x <- (1:dim(data)[2] - 1) / (dim(data)[2] - 1) + + axis( + side = 2, + at = x, + labels = colnames(data), + las = 2 + ) + + } + filled.contour(potentials, + plot.axes = matrix.axes(potentials), + main = "Protein-Protein Interaction Potential") + }) + + output$plotly3 <- renderPlotly({ + if (input$contourLabel == FALSE) { + plot_ly(z = volcano, + type = "contour", + colors = colorRamp(c("purple", "green"))) + } + else { + plot_ly( + z = volcano, + type = "contour", + colors = colorRamp(c("purple", "green")), + contours = list(showlabels = TRUE) + ) + } + }) + + #contour plot r code + output$CPCode1 <- renderUI ({ + if (input$contourLabel == FALSE) { + tags$code( + 'plot_ly(z = volcano, type = "contour", colors = colorRamp(c("purple", "green")))' + ) + } + else { + tags$code( + 'plot_ly(z = volcano, type = "contour", colors = colorRamp(c("purple", "green")), contours = list(showlabels = TRUE))' + ) + } + }) + + #heatmap + output$plotly4 <- renderPlotly({ + if (input$heatmapCol == 'purple+green') { + plot_ly(z = volcano, + type = "heatmap", + colors = colorRamp(c("purple", "green"))) + } + else if (input$heatmapCol == 'yellow+red') { + plot_ly(z = volcano, + type = "heatmap", + colors = colorRamp(c("yellow", "red"))) + } + else if (input$heatmapCol == 'pink+purple') { + plot_ly(z = volcano, + type = "heatmap", + colors = colorRamp(c("pink", "purple"))) + } + else { + plot_ly(z = volcano, + type = "heatmap", + colors = colorRamp(c("white", "black"))) + } + }) + + #heatmaps r code + output$CPCode2 <- renderUI ({ + if (input$heatmapCol == 'purple+green') { + tags$code( + 'plot_ly(z = volcano, type = "heatmap", colors = colorRamp(c("purple", "green")))' + ) + } + else if (input$heatmapCol == 'yellow+red') { + tags$code('plot_ly(z = volcano, type = "heatmap", colors = colorRamp(c("yellow", "red")))') + } + else if (input$heatmapCol == 'pink+purple') { + tags$code('plot_ly(z = volcano, type = "heatmap", colors = colorRamp(c("pink", "purple")))') + } + else { + tags$code('plot_ly(z = volcano, type = "heatmap", colors = colorRamp(c("white", "black")))') + } + }) + + output$cars1 <- renderPlotly ({ + head(mtcars) + data = as.matrix(mtcars) + data = apply(data, 2, function(x) { + x / mean(x) + }) + plot_ly( + x = colnames(data), + y = rownames(data), + z = data, + type = "heatmap" + ) + }) + +} +# Boast App Call ---- +boastUtils::boastApp(ui = ui, server = server) \ No newline at end of file From 2725f4e4ed77fd2ca9ecca74cc2cd85dcf30354a Mon Sep 17 00:00:00 2001 From: Bob Carey Date: Mon, 11 Oct 2021 09:54:40 -0400 Subject: [PATCH 02/21] Disabled rLocker --- DESCRIPTION | 20 +++ app.R | 496 ++++++++++++++++++++++++++-------------------------- 2 files changed, 267 insertions(+), 249 deletions(-) create mode 100644 DESCRIPTION diff --git a/DESCRIPTION b/DESCRIPTION new file mode 100644 index 0000000..6d0a240 --- /dev/null +++ b/DESCRIPTION @@ -0,0 +1,20 @@ +Title: Data Visualization +ShortName: Data Visualization +Date: 2021-10-11 +Lifecycle: experimental +Authors@R: c( + person(given = "Neil", family = "Hatfield", email = "neil.hatfield@psu.edu", role = c("aut", "cre")), + person(given = "Robert", family = "Carey", email = "rpc5102@psu.edu", role = c("aut")) + ) +Chapter: Data Science +Description: This app is focused on the common types of xyz. +LearningObjectives: c( + "The student will learn to understand Concept A in way z.", + "The student will learn to understand Concept B as description y." + ) +DisplayMode: Normal +URL: https://psu-eberly.shinyapps.io/Data_Visualization +BugReports: https://github.com/EducationShinyAppTeam/Data_Visualization/issues +License: CC-BY-NC-SA-4.0 +Tags: simulation +Type: Shiny diff --git a/app.R b/app.R index 80b90f3..3c78d6e 100644 --- a/app.R +++ b/app.R @@ -7,7 +7,6 @@ library(plotly) library(ggplot2) library(shinyAce) library(shinycssloaders) -library(rlocker) library(ggmap) library(boastUtils) library(DT) @@ -20,7 +19,6 @@ library(learnr) library(knitr) library(rmarkdown) library(shinyAce) -library(rlocker) library(ggmap) source("helpers.R") @@ -35,12 +33,12 @@ ui <- list( tags$li(class = "dropdown",tags$a(href = "https://shinyapps.science.psu.edu/", icon("home"))) ), - + sidebar = dashboardSidebar( width = 250, sidebarMenu(id = 'tabs', menuItem('Overview', tabName = 'overview', icon = icon("dashboard")), - menuItem('Simple Data Visualization', tabName = 'VisualOne', + menuItem('Simple Data Visualization', tabName = 'VisualOne', icon = icon('wpexplorer')), menuItem('Advanced Data Visualization', tabName = 'exp4', icon = icon('wpexplorer')), menuItem('References', tabName = "References", icon = icon("leanpub")) @@ -49,13 +47,13 @@ ui <- list( tags$div(class = "sidebar-logo", boastUtils::psu_eberly_logo("reversed")) ), - + body = dashboardBody( - tags$head( + tags$head( tags$link(rel = "stylesheet", type = "text/css", href = "https://educationshinyappteam.github.io/Style_Guide/theme/boast.css") ), tags$style(type = "text/css", ".content-wrapper,.right-side {background-color: white;}"), - + useShinyjs(), tabItems( tabItem(tabName = 'overview', @@ -64,27 +62,27 @@ ui <- list( h2(strong('About:')), p('This app illustrates R code for data visualization.'), br(), - + h2(strong('Instructions:')), p(tags$li("Simple data visualization section introduces how to create some commonly used plots with ggplot and Rplot with exercises at the end.")), p(tags$li("Advanced Data Visualization section introduces 3D plots, line plots, contour plots, and heat maps.")), br(), - div(style = 'text-align: center', - bsButton(inputId = 'go2', label = 'Explore', + div(style = 'text-align: center', + bsButton(inputId = 'go2', label = 'Explore', icon = icon('bolt'), size = 'large', class='circle grow')), br(), h2(strong('Acknowledgements:')), - p('This application was coded and developed by Anna (Yinqi) Zhang in 2018 and Yiyun Gong in 2019. + p('This application was coded and developed by Anna (Yinqi) Zhang in 2018 and Yiyun Gong in 2019. Special Thanks to Grace (Yubaihe) Zhou for being incredibly helpful with programming issues. It was updated for formatting by Ethan Wright 2020'), div(class = "updated", "Last Update: 9/4/2020 by EJW.") ), - + ############ Data Visualization Introduction ####### ######Characterizing one single Variable###### - + tabItem(tabName = 'VisualOne', # div(style="display: inline-block;vertical-align:top;", # tags$a(href='https://shinyapps.science.psu.edu/',tags$img(src='homebut.PNG', width = 19)) @@ -92,15 +90,15 @@ ui <- list( # div(style="display: inline-block;vertical-align:top;", # circleButton("info0",icon = icon("info"), status = "myClass",size = "xs") # ), - + tabsetPanel(type = 'tabs', ###### One Variable ###### tabPanel('Single Variable', h1(strong('One Variable Visualization')), # br(), - p('This section illustrates R code for data + p('This section illustrates R code for data visulization includes plot() and ggplot() with one Variable'), - + br(), sidebarLayout( sidebarPanel( @@ -110,19 +108,19 @@ ui <- list( background-color: #FFFFFF; }') )), - + checkboxInput("previewData", "Preview of Datasets"), - + ####select between plot and ggplot selectInput(inputId="plotType", label="Select Plot Package", choices = c('plot', 'ggplot'), selected = 'plot'), - + ####select datasets - selectInput(inputId="dataset", label="Select Dataset:", - choices= c('cars', 'trees'), + selectInput(inputId="dataset", label="Select Dataset:", + choices= c('cars', 'trees'), selected = 'cars'), - + ####variable options for 'car' dataset conditionalPanel( condition = "input.dataset == 'cars'", @@ -130,7 +128,7 @@ ui <- list( choices = c("speed", "dist"), selected = 'speed') ), - + ####variable option for 'trees' dataset conditionalPanel( condition = "input.dataset == 'trees'", @@ -143,21 +141,21 @@ ui <- list( #tags$a(tags$img(src="pdficon.png"), href="DataView.pdf", download="Viewdata.pdf") # br(), #downloadLink("downloadData", "Preview of Data"), - + ), - + mainPanel( conditionalPanel( - condition="input.previewData==1", - + condition="input.previewData==1", + fluidRow( column(2, p(strong("Dataset"))), column(4, DT::dataTableOutput("dataTable")), - + ) ), fluidRow( - column(6,plotOutput(outputId="oneDensity", width="100%",height="300px")%>% withSpinner(color="#FFFFFF")), + column(6,plotOutput(outputId="oneDensity", width="100%",height="300px")%>% withSpinner(color="#FFFFFF")), column(6,plotOutput(outputId="onehist", width="100%",height="300px")%>% withSpinner(color="#FFFFFF")) ), fluidRow( @@ -172,10 +170,10 @@ ui <- list( #twoscattercode, #logTransformationCode, #twobarcode, #twoboxcode {color: #FFFFFF}" )), - - + + fluidRow( - column(6,plotOutput(outputId="onebar", width="100%",height="300px")%>% withSpinner(color="#1E7B14")), + column(6,plotOutput(outputId="onebar", width="100%",height="300px")%>% withSpinner(color="#1E7B14")), column(6,plotOutput(outputId="oneqq", width="100%",height="300px")%>% withSpinner(color="#1E7B14")) ), fluidRow( @@ -184,21 +182,21 @@ ui <- list( ), br(), br() - # div(style = 'text-align: center', - # bsButton(inputId = 'next2', label = 'Next Section', - # icon = icon('angle-double-right'), size = 'small', + # div(style = 'text-align: center', + # bsButton(inputId = 'next2', label = 'Next Section', + # icon = icon('angle-double-right'), size = 'small', # class='circle grow')) ) ) ), - + ###### Two Variable ###### tabPanel(title='Two Variables', value='panel2', h3(strong('Two Variables Visualization')), # br(), - h4('This section illustrates R code for data + h4('This section illustrates R code for data visulization uses ggplot() with Two Variables'), - + br(), sidebarLayout( sidebarPanel( @@ -212,23 +210,23 @@ ui <- list( checkboxInput("previewDataTwo", "Preview of Datasets"), selectInput(inputId="continuous1", label="Select First Continuous Variable as X:", - choices= c('Sepal.Length', + choices= c('Sepal.Length', 'Sepal.Width'), selected = 'Sepal.Length'), - - selectInput(inputId="continuous2", + + selectInput(inputId="continuous2", label="Select Second Continuous Variable as Y:", - choices= c('Petal.Length', + choices= c('Petal.Length', 'Petal.Width'), selected = 'Petal.Length'), - - selectInput(inputId="CategoryVar", + + selectInput(inputId="CategoryVar", label="Select Categorical Variable:", choices= 'Species', selected = 'Species'), - + ), - + mainPanel( conditionalPanel( condition="input.previewDataTwo==1", @@ -261,12 +259,12 @@ ui <- list( ) ) ), - + tabPanel(title='Exercises', value='panel2', #uiOutput("urltest")) #includeMarkdown("test.Rmd") #system.file("knitr", package="shinyAce") - + fluidRow( column(6, verticalLayout( @@ -292,7 +290,7 @@ ui <- list( tags$style(type='text/css', '#question{font-size: 15px; background-color: #FFFFFF;color: black;}', '.well { padding: 10px; margin-bottom: 15px; max-width: 1000px; }') - + ), fluidPage( tags$head( @@ -308,8 +306,8 @@ ui <- list( div(style="display: inline-block;vertical-align:top; width: 30px;",HTML("
")), div(style="display: inline-block", bsButton(inputId = "reset",label = "Restart", style="danger", disabled = TRUE))) )), - - + + # column(3, # actionButton(inputId = 'submit', label = 'Submit', style="success") # ), @@ -320,16 +318,16 @@ ui <- list( # bsButton(inputId = "reset",label = "Restart", style="danger", ) # )), br(), - + ##########try rlocker statement######### # tags$samp( # htmlOutput("statements") # ), ##########end############# - - h2("Try Your Code"), + + h2("Try Your Code"), aceEditor("rmd", mode="markdown", value='This is some markdown text. It may also have embedded R code -which will be executed. Please also read the output +which will be executed. Please also read the output message for more hints. you can add a new code chuck with following two lines @@ -372,32 +370,32 @@ column(6, ######Advanced tabItem(tabName = 'exp4', tabsetPanel(type = 'tabs', - + ###### Maps ###### tabPanel('Maps', br(), box(title = NULL, style = 'background-color: #FFFFFF', width = NULL, height = NULL, - + selectInput(inputId = 'mapsOp', label = 'Make a US/World Map with ggplot2', choices = c('US Map - ggplot2', 'US Map - plotly'), selected = 'US Map'), bsPopover(id = 'mapsOp', title = " ", content = 'mUSMap takes in one dataframe that includes information about different US states and returns this data or a ggplot object constructed with the data. mWorldMap does the same but it takes in one dataframe that includes information about different countries.', trigger = 'click'), - + # conditionalPanel('input.mapsOp == "World Map"', # sliderInput(inputId = 'worldMap1', label = 'The Number of Color Scales', min = 1, max = 10, # value = 5, step = 1, ticks = TRUE) # ), - + conditionalPanel('input.mapsOp == "US Map - ggplot2"', selectInput(inputId = 'usMap1', label = 'Plot Option', choices = c('borders', 'frame')), selectInput(inputId = 'usMap2', label = 'Style Option', choices = c('compact', 'real')) ) - + ), - + # box(title = NULL, style = 'background-color: #f0f4c3', width=NULL, height = NULL, - + conditionalPanel('input.mapsOp == "US Map - ggplot2"', div(style = "background-color: #FFFFFF", tags$strong('R code: '), @@ -409,9 +407,9 @@ tabItem(tabName = 'exp4', ) ), br() - + )), - + conditionalPanel('input.mapsOp == "US Map - plotly"', div(style = "background-color: #FFFFFF", tags$strong('R code: '), @@ -422,33 +420,33 @@ tabItem(tabName = 'exp4', plotlyOutput('plotlyUSMap', width='80%')) ), br() - + )) # ) ), - + ###### 3D Plots ###### tabPanel('3D Plots', br(), fluidRow( column(width = 12, box(title = NULL, style = 'background-color: #FFFFFF', width = NULL, height = NULL, - selectInput(inputId = 'Exsel', label = '3D Plot Type', + selectInput(inputId = 'Exsel', label = '3D Plot Type', choices = c('Normal Simulation via Plotly', '3D Basic Scatter Plot', '3D Texts Plot'), - # choices = c('Normal Simulation via Plotly', 'Basic Scatter Plot', 'Basic Scatter Plot Colored by Groups', + # choices = c('Normal Simulation via Plotly', 'Basic Scatter Plot', 'Basic Scatter Plot Colored by Groups', # '3D Plots with Confidence Intervals', '3D Texts Plot'), selected = 'Normal Simulation via Plotly', multiple = FALSE), - - # bsPopover(id = 'Exsel', title = 'Understand the Graph Type', - # content = 'Mesh plot generates a wireframe plot while the scatter plot generates a dotted plot.', + + # bsPopover(id = 'Exsel', title = 'Understand the Graph Type', + # content = 'Mesh plot generates a wireframe plot while the scatter plot generates a dotted plot.', # placement = 'bottom', trigger = 'hover'), - + #a. Normal Simulation via Plotly conditionalPanel('input.Exsel == "Normal Simulation via Plotly"', sliderInput(inputId = 'Exsel1', label = 'Please Select Your Sample Size', min = 0, max = 100, value = 30, step = 1, ticks = TRUE) ), - + #b. Basic Scatter Plot conditionalPanel('input.Exsel == "3D Basic Scatter Plot"', selectInput(inputId = 'basicX', label = 'Variable for X-Axis', choices = c('Sepal.Length', 'Sepal.Width', 'Petal.Length', 'Petal.Width'), @@ -474,7 +472,7 @@ tabItem(tabName = 'exp4', fluidRow( column(width = 12, box(title = NULL, style = 'background-color: #FFFFFF', width = NULL, height = NULL, - + #a. Normal Simulation via Plotly conditionalPanel('input.Exsel == "Normal Simulation via Plotly"', tags$strong('R code: '), @@ -485,7 +483,7 @@ tabItem(tabName = 'exp4', verbatimTextOutput("hover"), verbatimTextOutput("click") ), - + #b. Basic Scatter Plot conditionalPanel('input.Exsel == "3D Basic Scatter Plot"', tags$strong('R code: '), @@ -494,18 +492,18 @@ tabItem(tabName = 'exp4', tableOutput('bspTable'), plotOutput('bspOut1') ), - + # #c. Basic Scatter Plot Colored by Groups # conditionalPanel('input.Exsel == "Basic Scatter Plot Colored by Groups"', # tableOutput('bspTableCopy'), # plotOutput('bspOut2') # ), - + # #d. 3D Plots with Confidence Intervals # conditionalPanel('input.Exsel == "3D Plots with Confidence Intervals"', # plotOutput('CIOut') # ), - + #e. 3D Texts Plot conditionalPanel('input.Exsel == "3D Texts Plot"', tags$strong('R code: '), @@ -514,22 +512,22 @@ tabItem(tabName = 'exp4', tableOutput('textTable'), plotOutput('textOut') ) - + ) ) ) ), - + ###### 2D Line Plots ###### tabPanel('2D Line Plots', br(), fluidRow( column(width = 12, box(title = NULL, style = 'background-color: #FFFFFF', width = NULL, height = NULL, - + sliderInput(inputId = 'LPsel1', label = 'Please Set the Maximum of X-Axis', min = 0, max = 200, value = 80, step = 1, ticks = TRUE), - + numericInput(inputId = 'LPnum1', label = 'Theoretical Mean of trace 0', value = 10, step = 1), selectInput(inputId = 'LPSEL1', label = 'Please Select Your First Graph Mode', @@ -552,7 +550,7 @@ tabItem(tabName = 'exp4', ) ) ), - + ###### Contour Plots & Heat Maps ###### tabPanel('Contour Plots & Heatmaps', br(), @@ -565,13 +563,13 @@ tabItem(tabName = 'exp4', )), #box(title = NULL, style = 'background-color: #FFFFFF', width = NULL, height = NULL, id="sidebarmap", - div('Heat maps and contour plots are visualization techniques to show - data density on a map. They are particularly helpful when you have - a lot of data points on the map and are mainly interested in their + div('Heat maps and contour plots are visualization techniques to show + data density on a map. They are particularly helpful when you have + a lot of data points on the map and are mainly interested in their overall distribution.'), br(), selectInput(inputId = 'chSel', label = 'Please Select Your Display Option', choices = c('', 'Contour Plots', 'Heatmaps'), selected = 'Contour Plots'), - + #contour plots conditionalPanel('input.chSel == "Contour Plots"', selectInput(inputId = 'chSel2', label = 'View An Example', choices = c('Volcano', 'Protein-Protein Interaction')), @@ -579,18 +577,18 @@ tabItem(tabName = 'exp4', checkboxInput(inputId = 'contourLabel', label = 'Add Contour Labels', value = FALSE) ) ), - + #heat maps conditionalPanel('input.chSel == "Heatmaps"', selectInput(inputId = 'heat1', label = 'View An Example', choices = c('Volcano', 'Cars')), conditionalPanel('input.heat1 == "Volcano"', - sliderTextInput(inputId = 'heatmapCol', label = 'Please Select Your Colorscale', + sliderTextInput(inputId = 'heatmapCol', label = 'Please Select Your Colorscale', choices = c('purple+green', 'yellow+red', 'pink+purple', 'white+black'), grid = TRUE) ) ) #) ), - + mainPanel( box(title = NULL, style = 'background-color: #FFFFFF', width = NULL, height = NULL, conditionalPanel('input.chSel == "Contour Plots"', @@ -606,9 +604,9 @@ tabItem(tabName = 'exp4', conditionalPanel('input.chSel2 == "Protein-Protein Interaction"', plotOutput('proteinInt') ) - + ), - + conditionalPanel('input.chSel == "Heatmaps"', conditionalPanel('input.heat1 == "Volcano"', tags$strong('R Code: '), @@ -631,28 +629,28 @@ tabItem( tabName = "References", withMathJax(), h2("References"), - + p('The Protein-Protein Interaction Dataset is from the Warwick University - Molecular Organisation and Assembly in Cells.'), - + p(class = "hangingindent", - "Attali, D. (2020). - shinyjs: Easily Improve the User Experience of Your Shiny Apps in Seconds, R package. + "Attali, D. (2020). + shinyjs: Easily Improve the User Experience of Your Shiny Apps in Seconds, R package. Available from https://CRAN.R-project.org/package=shinyjs"), p(class = "hangingindent", "Chang, W. and Borges Ribeiro, B. (2018), - shinydashboard: Create Dashboards with 'Shiny', R package. + shinydashboard: Create Dashboards with 'Shiny', R package. Available from https://CRAN.R-project.org/package=shinydashboard"), p(class = "hangingindent", "Chang, W., Cheng, J., Allaire, J., Xie, Y., and MchPherson, J. (2020), shiny: Web Application Framework for R, R package. Available from https://CRAN.R-project.org/package=shiny"), p(class = "hangingindent", - "Bailey, E. (2015). + "Bailey, E. (2015). shinyBS: Twitter Bootstrap Components for Shiny, R package. Available from https://CRAN.R-project.org/package=shinyBS"), p(class = "hangingindent", - "Perrier, V., Meyer, F., and Granjon, D. (2020). - shinyWidgets: Custom Inputs Widgets for Shiny, R package. + "Perrier, V., Meyer, F., and Granjon, D. (2020). + shinyWidgets: Custom Inputs Widgets for Shiny, R package. Available from https://CRAN.R-project.org/package=shinyWidgets"), p(class = "hangingindent", "Sievert, C. (2020). @@ -664,7 +662,7 @@ tabItem( Springer-Verlag New York, 2016." ), p(class = "hangingindent", - "Nijs, V., Fang, F., Trestle Technology, LLC and Allen, J. (2019). + "Nijs, V., Fang, F., Trestle Technology, LLC and Allen, J. (2019). shinyAce: Ace Editor Bindings for Shiny, R package. Available from https://CRAN.R-project.org/package=shinyAce" ), @@ -674,16 +672,16 @@ tabItem( https://CRAN.R-project.org/package=shinycssloaders" ), p(class = "hangingindent", - "Carey R. (2019). - rlocker: Learning Locker for Shiny, R package. + "Carey R. (2019). + rlocker: Learning Locker for Shiny, R package. Available from https://github.com/rpc5102/rlocker"), p(class = "hangingindent", "Carey, R. and Hatfield, N. (2020). boastUtils: BOAST Utilities. R package version 0.1.4. https://github.com/EducationShinyAppTeam/boastUtils" ) - - + + ) ) @@ -691,39 +689,39 @@ tabItem( server <- function(input, output, session) { # Initialize Learning Locker connection - connection <- rlocker::connect( - session, - list( - base_url = "https://learning-locker.stat.vmhost.psu.edu/", - auth = "Basic ZDQ2OTNhZWZhN2Q0ODRhYTU4OTFmOTlhNWE1YzBkMjQxMjFmMGZiZjo4N2IwYzc3Mjc1MzU3MWZkMzc1ZDliY2YzOTNjMGZiNzcxOThiYWU2", - agent = rlocker::createAgent() - ) - ) - - # Setup demo app and user. - currentUser <- - connection$agent - - if (connection$status != 200) { - warning(paste(connection$status, "\nTry checking your auth token.")) - } - + # connection <- rlocker::connect( + # session, + # list( + # base_url = "https://learning-locker.stat.vmhost.psu.edu/", + # auth = "Basic ZDQ2OTNhZWZhN2Q0ODRhYTU4OTFmOTlhNWE1YzBkMjQxMjFmMGZiZjo4N2IwYzc3Mjc1MzU3MWZkMzc1ZDliY2YzOTNjMGZiNzcxOThiYWU2", + # agent = rlocker::createAgent() + # ) + # ) + # + # # Setup demo app and user. + # currentUser <- + # connection$agent + # + # if (connection$status != 200) { + # warning(paste(connection$status, "\nTry checking your auth token.")) + # } + ##############end######### output$Previewcar <- renderTable({ head(cars, 4) }, striped = TRUE, hover = TRUE, bordered = TRUE, spacing = 'xs') - + output$Previewtree <- renderTable({ head(trees, 4) }, striped = TRUE, hover = TRUE, bordered = TRUE, spacing = 'xs') - + output$Previewiris <- renderTable({ head(iris, 4) }, striped = TRUE, hover = TRUE, bordered = TRUE, spacing = 'xs') - + ###KNITR observeEvent(input$eval, { withBusyIndicatorServer("eval", { @@ -736,13 +734,13 @@ server <- function(input, output, session) { ) ))) }) - + output$output <- renderPrint({ return(isolate(eval(parse(text = input$code)))) }) }) }) - + output$knitDoc <- renderUI({ input$eval return(isolate(HTML( @@ -753,12 +751,12 @@ server <- function(input, output, session) { ) ))) }) - + output$output <- renderPrint({ input$eval return(isolate(eval(parse(text = input$code)))) }) - + observeEvent(input$info0, { sendSweetAlert( session = session, @@ -778,11 +776,11 @@ server <- function(input, output, session) { observeEvent(input$go2, { updateTabItems(session, 'tabs', 'VisualOne') }) - + observeEvent(input$next2, { updateTabsetPanel(session, 'VisualOne', selected = 'panel2') }) - + ############ Data Visualization ############ ###########One Single Variable Plot############## output$oneDensity <- @@ -845,7 +843,7 @@ server <- function(input, output, session) { alpha = 0.4) + ggtitle('Density Plot') } - + } else if (input$treesVariable == 'Volume') { if (input$plotType == 'plot') { @@ -860,7 +858,7 @@ server <- function(input, output, session) { alpha = 0.4) + ggtitle('Density Plot') } - + } } }, @@ -870,7 +868,7 @@ server <- function(input, output, session) { input$plotType, input$treesVariable) }) - + output$onehist <- renderCachedPlot({ if (input$dataset == 'cars') { if (input$carsVariable == 'speed') { @@ -900,7 +898,7 @@ server <- function(input, output, session) { alpha = 0.4) + ggtitle("Histogram") } - + } } else if (input$dataset == 'trees') { @@ -945,7 +943,7 @@ server <- function(input, output, session) { alpha = 0.4) + ggtitle("Histogram") } - + } } }, @@ -955,7 +953,7 @@ server <- function(input, output, session) { input$carsVariable, input$treesVariable) }) - + output$onebar <- renderCachedPlot({ if (input$dataset == 'cars') { @@ -996,7 +994,7 @@ server <- function(input, output, session) { ) + ggtitle('Frequency polygon') } - + } } else if (input$dataset == 'trees') { @@ -1037,7 +1035,7 @@ server <- function(input, output, session) { ) + ggtitle('Frequency polygon') } - + } else if (input$treesVariable == 'Volume') { if (input$plotType == 'plot') { @@ -1065,7 +1063,7 @@ server <- function(input, output, session) { input$carsVariable, input$treesVariable) }) - + output$oneqq <- renderCachedPlot({ if (input$dataset == 'cars') { @@ -1143,7 +1141,7 @@ server <- function(input, output, session) { input$carsVariable, input$treesVariable) }) - + output$DensityoneCode <- renderText({ if (input$dataset == 'cars') { if (input$plotType == 'plot') { @@ -1194,7 +1192,7 @@ server <- function(input, output, session) { } } }) - + output$HistogramoneCode <- renderText({ if (input$dataset == 'cars') { if (input$plotType == 'plot') { @@ -1241,7 +1239,7 @@ server <- function(input, output, session) { } } }) - + output$BarCode <- renderText({ if (input$dataset == 'cars') { if (input$plotType == 'plot') { @@ -1290,7 +1288,7 @@ server <- function(input, output, session) { } } }) - + output$qqCode <- renderText({ if (input$dataset == 'cars') { if (input$plotType == 'plot') { @@ -1349,7 +1347,7 @@ server <- function(input, output, session) { seq = '' ) } - + } }) ###########Two Variables######## @@ -1393,8 +1391,8 @@ server <- function(input, output, session) { }, cacheKeyExpr = { list(input$continuous1, input$continuous2) }) - - + + output$logTransformation <- renderCachedPlot({ if (input$continuous1 == 'Sepal.Length') { if (input$continuous2 == 'Petal.Length') { @@ -1430,7 +1428,7 @@ server <- function(input, output, session) { }, cacheKeyExpr = { list(input$continuous1, input$continuous2) }) - + output$twobar <- renderCachedPlot({ if (input$continuous1 == 'Sepal.Length') { if (input$continuous2 == 'Petal.Length') { @@ -1479,8 +1477,8 @@ server <- function(input, output, session) { }, cacheKeyExpr = { list(input$continuous1, input$continuous2) }) - - + + output$twobox <- renderCachedPlot({ if (input$continuous1 == 'Sepal.Length') { if (input$continuous2 == 'Petal.Length') { @@ -1529,7 +1527,7 @@ server <- function(input, output, session) { }, cacheKeyExpr = { list(input$continuous1, input$continuous2) }) - + output$twoscattercode <- renderText({ paste( 'R Code:', @@ -1544,7 +1542,7 @@ server <- function(input, output, session) { seq = '' ) }) - + output$logTransformationCode <- renderText({ paste( 'R Code:', @@ -1559,7 +1557,7 @@ server <- function(input, output, session) { seq = '' ) }) - + output$twobarcode <- renderText({ paste( 'R Code:', @@ -1573,7 +1571,7 @@ server <- function(input, output, session) { seq = '' ) }) - + output$twoboxcode <- renderText({ paste( 'R Code:', @@ -1587,8 +1585,8 @@ server <- function(input, output, session) { seq = '' ) }) - - + + ###########Exercises Part################### # observeEvent(input$submit, { # updateButton(session, "nextq", disabled = FALSE) @@ -1597,7 +1595,7 @@ server <- function(input, output, session) { # observeEvent(input$submit, { # updateButton(session, "submit", disabled = TRUE) # }) - + observeEvent(input$nextq, { # updateButton(session, "submit", disabled = FALSE) # updateButton(session, "nextq", disabled = TRUE) @@ -1609,8 +1607,8 @@ server <- function(input, output, session) { img(src = NULL, width = 30) }) }) - - + + #### question bank #### value <- reactiveValues(index = 1, mistake = 0, @@ -1618,57 +1616,57 @@ server <- function(input, output, session) { ans <- as.matrix(bank[1:14, 6]) #ans <- data.frame(ans) index_list <- reactiveValues(list = sample(2:14, 10, replace = FALSE)) - + observeEvent(input$nextq, { value$answerbox <- value$index index_list$list = index_list$list[-1] value$index <- index_list$list[1] value$answerbox <- value$index - + updateButton(session, "nextq", disabled = TRUE) updateButton(session, "submit", disabled = FALSE) }) - + output$question <- renderUI({ h4(bank[value$index, 2]) # radioButtons(inputId = bank[value$index,1], label= bank[value$index, 2], # choiceNames=c(bank[value$index, 3], bank[value$index, 4], bank[value$index, 5]), # choiceValues = c("A", "B", "C")) }) - + output$options <- renderUI({ str1 <- paste("A.", bank[value$index, 3]) str2 <- paste("B.", bank[value$index, 4]) str3 <- paste("C.", bank[value$index, 5]) HTML(paste(str1, str2, str3, sep = '
')) }) - - - observeEvent(input$answer, { - req(input$answer, input$answer != '') - answer <- isolate(input$answer) - interacted_statement <- rlocker::createStatement(list( - verb = list(display = "interacted"), - object = list( - id = paste0(getCurrentAddress(session), "#", value$index), - name = paste('Question', value$index), - description = bank[value$index, 2] - - ), - result = list( - success = NA, - response = paste(getResponseText(value$index, answer)) - ) - )) - - # Store statement in locker and return status - status <- rlocker::store(session, interacted_statement) - - print(interacted_statement) # remove me - print(status) # remove me - }) - - + + + # observeEvent(input$answer, { + # req(input$answer, input$answer != '') + # answer <- isolate(input$answer) + # interacted_statement <- rlocker::createStatement(list( + # verb = list(display = "interacted"), + # object = list( + # id = paste0(getCurrentAddress(session), "#", value$index), + # name = paste('Question', value$index), + # description = bank[value$index, 2] + # + # ), + # result = list( + # success = NA, + # response = paste(getResponseText(value$index, answer)) + # ) + # )) + # + # # Store statement in locker and return status + # status <- rlocker::store(session, interacted_statement) + # + # print(interacted_statement) # remove me + # print(status) # remove me + # }) + + getResponseText <- function(index, answer) { if (answer == 'A') { key = 3 @@ -1679,7 +1677,7 @@ server <- function(input, output, session) { } return(bank[index, key]) } - + observeEvent(input$submit, { if (length(index_list$list) == 1) { updateButton(session, "nextq", disabled = TRUE) @@ -1691,32 +1689,32 @@ server <- function(input, output, session) { updateButton(session, "submit", disabled = TRUE) updateButton(session, "reset", disabled = FALSE) } - + # output$progress<-renderUI({ # paste("You are currently on problem", 11-length(index_list$list), "/10") # }) - + answer <- isolate(input$answer) - - statement <- rlocker::createStatement(list( - verb = list(display = "answered"), - object = list( - id = paste0(getCurrentAddress(session), "#", value$index), - name = paste('Question', value$index), - description = bank[value$index, 2] - ), - result = list( - success = any(answer == ans[value$index, 1]), - response = paste(getResponseText(value$index, answer)) - ) - )) - - # Store statement in locker and return status - status <- rlocker::store(session, statement) - - print(statement) # remove me - print(status) # remove me - + + # statement <- rlocker::createStatement(list( + # verb = list(display = "answered"), + # object = list( + # id = paste0(getCurrentAddress(session), "#", value$index), + # name = paste('Question', value$index), + # description = bank[value$index, 2] + # ), + # result = list( + # success = any(answer == ans[value$index, 1]), + # response = paste(getResponseText(value$index, answer)) + # ) + # )) + # + # # Store statement in locker and return status + # status <- rlocker::store(session, statement) + # + # print(statement) # remove me + # print(status) # remove me + output$mark <- renderUI({ if (any(answer == ans[value$index, 1])) { img(src = "correct.png", width = 30) @@ -1729,7 +1727,7 @@ server <- function(input, output, session) { } }) }) - + observeEvent(input$reset, { updateButton(session, "submit", disabled = FALSE) updateButton(session, "reset", disable = TRUE) @@ -1746,7 +1744,7 @@ server <- function(input, output, session) { img(src = NULL, width = 30) }) }) - + ###### Maps ###### #a. usMap output$usMapOut1 <- renderCachedPlot({ @@ -1790,7 +1788,7 @@ server <- function(input, output, session) { }, cacheKeyExpr = { list(input$usMap1, input$usMap2) }) - + output$usMapOut2 <- renderUI ({ tags$code( 'mUSMap(USArrests2, key = "state", fill = "UrbanPop", plot = "', @@ -1800,12 +1798,12 @@ server <- function(input, output, session) { '")' ) }) - + #plotly US Map - code output$plotlyUScode <- renderUI ({ tags$code('p <- plot_geo(df, locationmode = "USA-states", sizes = c(1, 250))') }) - + #plotly US Map output$plotlyUSMap <- renderPlotly({ df <- @@ -1816,7 +1814,7 @@ server <- function(input, output, session) { levels(df$q) <- paste(c("1st", "2nd", "3rd", "4th", "5th"), "Quantile") df$q <- as.ordered(df$q) - + g <- list( scope = 'usa', projection = list(type = 'albers usa'), @@ -1827,7 +1825,7 @@ server <- function(input, output, session) { subunitcolor = toRGB("white"), countrycolor = toRGB("white") ) - + p <- plot_geo(df, locationmode = 'USA-states', sizes = c(1, 250)) %>% add_markers( @@ -1842,8 +1840,8 @@ server <- function(input, output, session) { g p }) - - + + ###### 3D Plots ###### #a. Normal Simulation via Plotly output$plotly1 <- renderPlotly ({ @@ -1855,7 +1853,7 @@ server <- function(input, output, session) { mode = 'markers' ) }) - + output$ExCode <- renderUI ({ tags$code( 'plot_ly(x = rnorm(', @@ -1867,8 +1865,8 @@ server <- function(input, output, session) { '), type = "scatter3d", mode = "markers")' ) }) - - + + output$hover <- renderPrint({ dataHover <- event_data("plotly_hover") if (is.null(dataHover)) { @@ -1878,7 +1876,7 @@ server <- function(input, output, session) { dataHover } }) - + output$click <- renderPrint({ dataClick <- event_data("plotly_click") if (is.null(dataClick)) { @@ -1888,7 +1886,7 @@ server <- function(input, output, session) { dataClick } }) - + # output$ExCode <- renderUI ({ # if (input$Exsel == 'Scatter Plot') { # tags$code('plot_ly(x = rnorm(', input$Exsel1, '), y = rnorm(', input$Exsel1, '), z = rnorm(', input$Exsel1, '), type = "scatter3d", mode = "markers")') @@ -1900,18 +1898,18 @@ server <- function(input, output, session) { # tags$code('plot_ly(x = rnorm(', input$Exsel1, '), y = rnorm(', input$Exsel1, '), z = rnorm(', input$Exsel1, '), type = "mesh3d", mode = "markers")') # } # }) - + #b. Basic Scatter Plot output$basicRcode <- renderUI ({ tags$code( 'scatter3D(x, y, z, clab = c("Sepal", "Width (cm)"), xlab = input$basicX, ylab = input$basicY, zlab = input$basicZ)' ) }) - + output$bspTable <- renderTable ({ head(iris) }) - + output$bspOut1 <- renderPlot({ x <- iris[, input$basicX] y <- iris[, input$basicY] @@ -1926,7 +1924,7 @@ server <- function(input, output, session) { zlab = input$basicZ ) }) - + # #c. # output$bspTableCopy <- renderTable ({ # head(iris) @@ -1941,7 +1939,7 @@ server <- function(input, output, session) { # addlines = TRUE, length = 0.5, width = 0.5, # labels = c("setosa", "versicolor", "virginica")) ) # }) - + # #d. 3D Plots with Confidence Intervals # output$CIOut <- renderPlot ({ # x <- iris[, input$CIX] @@ -1952,7 +1950,7 @@ server <- function(input, output, session) { # scatter3D(x, y, z, phi = 0, bty = "g", col = gg.col(100), # pch = 18, CI = CI) # }) - + #e. 3D Texts Plot output$textRcode <- renderUI ({ tags$code( @@ -1965,11 +1963,11 @@ server <- function(input, output, session) { clab = c("Urban","Pop"), adj = 0.5, font = 2))' ) }) - + output$textTable <- renderTable ({ head(USArrests) }) - + output$textOut <- renderPlot ({ data(USArrests) with( @@ -1997,7 +1995,7 @@ server <- function(input, output, session) { ) ) }) - + ###### 2D Line Plots ###### output$plotly2 <- renderPlotly ({ trace_0 <- @@ -2060,14 +2058,14 @@ server <- function(input, output, session) { mode = 'lines') } }) - + output$LPCode <- renderUI ({ tags$code( 'plot_ly(data, x = ~x, y = ~trace_0, name = "trace 0", type = "scatter", mode = "lines") %>% add_trace(y = ~trace_1, name = "trace 1", mode = "markers + lines")' ) }) - + ###### Contour Plots and Heatmaps ###### #contour plot output$proteinInt <- renderPlot ({ @@ -2080,30 +2078,30 @@ server <- function(input, output, session) { matrix.axes <- function(data) { # Do the rows, las=2 for text perpendicular to the axis x <- (1:dim(data)[1] - 1) / (dim(data)[1] - 1) - + axis( side = 1, at = x, labels = rownames(data), las = 2 ) - + # Do the columns x <- (1:dim(data)[2] - 1) / (dim(data)[2] - 1) - + axis( side = 2, at = x, labels = colnames(data), las = 2 ) - + } filled.contour(potentials, plot.axes = matrix.axes(potentials), main = "Protein-Protein Interaction Potential") }) - + output$plotly3 <- renderPlotly({ if (input$contourLabel == FALSE) { plot_ly(z = volcano, @@ -2119,7 +2117,7 @@ server <- function(input, output, session) { ) } }) - + #contour plot r code output$CPCode1 <- renderUI ({ if (input$contourLabel == FALSE) { @@ -2133,7 +2131,7 @@ server <- function(input, output, session) { ) } }) - + #heatmap output$plotly4 <- renderPlotly({ if (input$heatmapCol == 'purple+green') { @@ -2157,7 +2155,7 @@ server <- function(input, output, session) { colors = colorRamp(c("white", "black"))) } }) - + #heatmaps r code output$CPCode2 <- renderUI ({ if (input$heatmapCol == 'purple+green') { @@ -2175,7 +2173,7 @@ server <- function(input, output, session) { tags$code('plot_ly(z = volcano, type = "heatmap", colors = colorRamp(c("white", "black")))') } }) - + output$cars1 <- renderPlotly ({ head(mtcars) data = as.matrix(mtcars) @@ -2189,7 +2187,7 @@ server <- function(input, output, session) { type = "heatmap" ) }) - + } # Boast App Call ---- -boastUtils::boastApp(ui = ui, server = server) \ No newline at end of file +boastUtils::boastApp(ui = ui, server = server) From 7f0ce3be4e859a01b39c7d08b8ac99f78c60bea6 Mon Sep 17 00:00:00 2001 From: ymy5178 Date: Tue, 7 Jun 2022 17:05:34 -0400 Subject: [PATCH 03/21] preview & three buttons in exercises & font in headings & reference & misspelling preview datasets button can work now. submit next restart buttons in exercises can work now. correct the sequence of reference and some misspelling make the font of headings of one variable and two variables the same. add description in readme. change the chapter number in description. change the screenshot. The last problem left is to show codes of one variable and two variables. --- DESCRIPTION | 4 +- README.md | 7 -- app.R | 183 ++++++++++++++++++---------------- LICENSE.md => docs/LICENSE.md | 0 docs/README.md | 10 ++ docs/screenshot.PNG | Bin 0 -> 235437 bytes figure/unnamed-chunk-5-1.png | Bin 21424 -> 2939 bytes 7 files changed, 108 insertions(+), 96 deletions(-) delete mode 100644 README.md rename LICENSE.md => docs/LICENSE.md (100%) create mode 100644 docs/README.md create mode 100644 docs/screenshot.PNG diff --git a/DESCRIPTION b/DESCRIPTION index 6d0a240..8e3756c 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,12 +1,12 @@ Title: Data Visualization ShortName: Data Visualization -Date: 2021-10-11 +Date: 2022-06-07 Lifecycle: experimental Authors@R: c( person(given = "Neil", family = "Hatfield", email = "neil.hatfield@psu.edu", role = c("aut", "cre")), person(given = "Robert", family = "Carey", email = "rpc5102@psu.edu", role = c("aut")) ) -Chapter: Data Science +Chapter: Chapter 11 Description: This app is focused on the common types of xyz. LearningObjectives: c( "The student will learn to understand Concept A in way z.", diff --git a/README.md b/README.md deleted file mode 100644 index dea7fd5..0000000 --- a/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# Data Visualization App - -[![License: CC BY-NC-SA 4.0](https://img.shields.io/badge/License-CC%20BY--NC--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-nc-sa/4.0/) ![experimental](https://img.shields.io/badge/lifecycle-experimental-orange) ![year](https://img.shields.io/badge/year-2018-lightgrey) - -![App Screenshot](coverpic.png) - -APP_DESCRIPTION diff --git a/app.R b/app.R index 3c78d6e..7130ec0 100644 --- a/app.R +++ b/app.R @@ -20,6 +20,7 @@ library(knitr) library(rmarkdown) library(shinyAce) library(ggmap) +library(rLocker) source("helpers.R") @@ -97,7 +98,7 @@ ui <- list( h1(strong('One Variable Visualization')), # br(), p('This section illustrates R code for data - visulization includes plot() and ggplot() with one Variable'), + visualization includes plot() and ggplot() with one Variable'), br(), sidebarLayout( @@ -192,10 +193,10 @@ ui <- list( ###### Two Variable ###### tabPanel(title='Two Variables', value='panel2', - h3(strong('Two Variables Visualization')), + h1(strong('Two Variables Visualization')),#change h3 to h1 # br(), - h4('This section illustrates R code for data - visulization uses ggplot() with Two Variables'), + p('This section illustrates R code for data + visualization uses ggplot() with Two Variables'), #change h4 to p br(), sidebarLayout( @@ -633,55 +634,50 @@ tabItem( p('The Protein-Protein Interaction Dataset is from the Warwick University - Molecular Organisation and Assembly in Cells.'), p(class = "hangingindent", - "Attali, D. (2020). - shinyjs: Easily Improve the User Experience of Your Shiny Apps in Seconds, R package. + "Attali, D. (2020). + shinyjs: Easily Improve the User Experience of Your Shiny Apps in Seconds, R package. Available from https://CRAN.R-project.org/package=shinyjs"), + p(class = "hangingindent", + "Bailey, E. (2015). + shinyBS: Twitter Bootstrap Components for Shiny, R package. + Available from https://CRAN.R-project.org/package=shinyBS"), + p(class = "hangingindent", + "Carey R. (2019). + rlocker: Learning Locker for Shiny, R package. + Available from https://github.com/rpc5102/rlocker"), + p(class = "hangingindent", + "Carey, R. and Hatfield, N. (2020). boastUtils: BOAST Utilities. R + package version 0.1.4. + https://github.com/EducationShinyAppTeam/boastUtils"), p(class = "hangingindent", "Chang, W. and Borges Ribeiro, B. (2018), - shinydashboard: Create Dashboards with 'Shiny', R package. + shinydashboard: Create Dashboards with 'Shiny', R package. Available from https://CRAN.R-project.org/package=shinydashboard"), p(class = "hangingindent", "Chang, W., Cheng, J., Allaire, J., Xie, Y., and MchPherson, J. (2020), shiny: Web Application Framework for R, R package. Available from https://CRAN.R-project.org/package=shiny"), p(class = "hangingindent", - "Bailey, E. (2015). - shinyBS: Twitter Bootstrap Components for Shiny, R package. - Available from https://CRAN.R-project.org/package=shinyBS"), + "Nijs, V., Fang, F., Trestle Technology, LLC and Allen, J. (2019). + shinyAce: Ace Editor Bindings for Shiny, R package. + Available from https://CRAN.R-project.org/package=shinyAce"), p(class = "hangingindent", - "Perrier, V., Meyer, F., and Granjon, D. (2020). - shinyWidgets: Custom Inputs Widgets for Shiny, R package. + "Perrier, V., Meyer, F., and Granjon, D. (2020). + shinyWidgets: Custom Inputs Widgets for Shiny, R package. Available from https://CRAN.R-project.org/package=shinyWidgets"), + p(class = "hangingindent", + "Sali, A. and Attali D. (2020). shinycssloaders: Add CSS Loading + Animations to 'shiny' Outputs, R package. + https://CRAN.R-project.org/package=shinycssloaders"), p(class = "hangingindent", "Sievert, C. (2020). plotly: Interactive Web-Based Data Visualization with R, plotly, and - shiny. Chapman and Hall/CRC Florida, 2020." - ), + shiny. Chapman and Hall/CRC Florida, 2020."), p(class = "hangingindent", "Wickham, H., ggplot2: Elegant Graphics for Data Analysis, R package. Springer-Verlag New York, 2016." - ), - p(class = "hangingindent", - "Nijs, V., Fang, F., Trestle Technology, LLC and Allen, J. (2019). - shinyAce: Ace Editor Bindings for Shiny, R package. - Available from https://CRAN.R-project.org/package=shinyAce" - ), - p(class = "hangingindent", - "Sali, A. and Attali D. (2020). shinycssloaders: Add CSS Loading - Animations to 'shiny' Outputs, R package. - https://CRAN.R-project.org/package=shinycssloaders" - ), - p(class = "hangingindent", - "Carey R. (2019). - rlocker: Learning Locker for Shiny, R package. - Available from https://github.com/rpc5102/rlocker"), - p(class = "hangingindent", - "Carey, R. and Hatfield, N. (2020). boastUtils: BOAST Utilities. R - package version 0.1.4. - https://github.com/EducationShinyAppTeam/boastUtils" ) - ) ) @@ -707,21 +703,31 @@ server <- function(input, output, session) { # } ##############end######### - output$Previewcar <- - renderTable({ - head(cars, 4) - }, striped = TRUE, hover = TRUE, bordered = TRUE, spacing = 'xs') - - output$Previewtree <- - renderTable({ - head(trees, 4) - }, striped = TRUE, hover = TRUE, bordered = TRUE, spacing = 'xs') - + output$dataTable <- DT::renderDataTable({ + if(input$dataset == "cars") + cars + else + trees + }) + + #output$Previewcar <- #previous + #renderTable({ + #head(cars, 4) + #}, striped = TRUE, hover = TRUE, bordered = TRUE, spacing = 'xs') + + #output$Previewtree <- #previous + #renderTable({ + #head(trees, 4) + #}, striped = TRUE, hover = TRUE, bordered = TRUE, spacing = 'xs') + + #output$Previewiris <- #previous + #renderTable({ + #head(iris, 4) + #}, striped = TRUE, hover = TRUE, bordered = TRUE, spacing = 'xs') output$Previewiris <- - renderTable({ - head(iris, 4) - }, striped = TRUE, hover = TRUE, bordered = TRUE, spacing = 'xs') - + DT::renderDataTable({ + iris + }) ###KNITR observeEvent(input$eval, { withBusyIndicatorServer("eval", { @@ -1603,9 +1609,11 @@ server <- function(input, output, session) { "answer", "pick an answer from below", c("", "A", "B", "C")) + output$mark <- renderUI({ img(src = NULL, width = 30) }) + disable("submit") }) @@ -1642,29 +1650,30 @@ server <- function(input, output, session) { }) - # observeEvent(input$answer, { - # req(input$answer, input$answer != '') - # answer <- isolate(input$answer) - # interacted_statement <- rlocker::createStatement(list( - # verb = list(display = "interacted"), - # object = list( - # id = paste0(getCurrentAddress(session), "#", value$index), - # name = paste('Question', value$index), - # description = bank[value$index, 2] - # - # ), - # result = list( - # success = NA, - # response = paste(getResponseText(value$index, answer)) - # ) - # )) - # - # # Store statement in locker and return status - # status <- rlocker::store(session, interacted_statement) - # - # print(interacted_statement) # remove me - # print(status) # remove me - # }) + observeEvent(input$answer, { + req(input$answer, input$answer != '') + answer <- isolate(input$answer) + interacted_statement <- rLocker::createStatement(list( + verb = list(display = "interacted"), + object = list( + id = paste0(getCurrentAddress(session), "#", value$index), + name = paste('Question', value$index), + description = bank[value$index, 2] + + ), + result = list( + success = NA, + response = paste(getResponseText(value$index, answer)) + ) + )) + + # Store statement in locker and return status + status <- rLocker::store(session, interacted_statement) + enable("submit") #change + + #print(interacted_statement) # remove me + #print(status) # remove me + }) getResponseText <- function(index, answer) { @@ -1696,24 +1705,24 @@ server <- function(input, output, session) { answer <- isolate(input$answer) - # statement <- rlocker::createStatement(list( - # verb = list(display = "answered"), - # object = list( - # id = paste0(getCurrentAddress(session), "#", value$index), - # name = paste('Question', value$index), - # description = bank[value$index, 2] - # ), - # result = list( - # success = any(answer == ans[value$index, 1]), - # response = paste(getResponseText(value$index, answer)) - # ) - # )) + statement <- rLocker::createStatement(list( + verb = list(display = "answered"), + object = list( + id = paste0(getCurrentAddress(session), "#", value$index), + name = paste('Question', value$index), + description = bank[value$index, 2] + ), + result = list( + success = any(answer == ans[value$index, 1]), + response = paste(getResponseText(value$index, answer)) + ) + )) # # # Store statement in locker and return status - # status <- rlocker::store(session, statement) - # - # print(statement) # remove me - # print(status) # remove me + status <- rLocker::store(session, statement) + + print(statement) # remove me + print(status) # remove me output$mark <- renderUI({ if (any(answer == ans[value$index, 1])) { diff --git a/LICENSE.md b/docs/LICENSE.md similarity index 100% rename from LICENSE.md rename to docs/LICENSE.md diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000..969695d --- /dev/null +++ b/docs/README.md @@ -0,0 +1,10 @@ +# Data Visualization App + +[![License: CC BY-NC-SA 4.0](https://img.shields.io/badge/License-CC%20BY--NC--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-nc-sa/4.0/) ![experimental](https://img.shields.io/badge/lifecycle-experimental-orange) +![year](https://img.shields.io/badge/year-2018-lightgrey) + +![App Screenshot](../docs/screenshot.png) + +# APP_DESCRIPTION + +The goal of this app is to let users familiar with graphing codes. diff --git a/docs/screenshot.PNG b/docs/screenshot.PNG new file mode 100644 index 0000000000000000000000000000000000000000..762ad86b37a581854d569071da19a0c82bbf8e23 GIT binary patch literal 235437 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