Nothing
## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>"
)
## ----message = FALSE----------------------------------------------------------
library(shiny)
library(bslib)
library(inshiny)
## -----------------------------------------------------------------------------
ui <- page_fixed(
theme = bs_theme(version = 5, preset = "quartz"),
h1("Temperature plot"),
plotOutput("plot", width = 480, height = 320),
br(),
inline("Start on ", inline_date("start_date", "2025-01-01"),
" and plot for ", inline_number("num_days", 365), " days."),
inline("Average temperature: ", inline_slider("avg_temp", 20, 0, 40),
" °C. Range: ±", inline_select("temp_range", c(5, 10, 15), 10), " °C."),
inline("Hemisphere: ", inline_switch("southern", FALSE,
on = "Southern", off = "Northern")),
inline(inline_button("colour", "Change colour"), " ",
inline_link("reset", "Reset"))
)
## -----------------------------------------------------------------------------
ui <- page_fixed(
theme = bs_theme(version = 5, preset = "quartz"),
h1("Temperature plot"),
plotOutput("plot", width = 480, height = 320),
br(),
dateInput("start_date", "Start date", "2025-01-01"),
numericInput("num_days", "Number of days", 365),
sliderInput("avg_temp", "Average temperature (°C)", 0, 40, 20),
selectInput("temp_range", "Temperature range (± °C)", c(5, 10, 15), 10),
checkboxInput("southern", "Southern hemisphere", FALSE),
actionButton("colour", "Change colour"),
actionLink("reset", "Reset"),
)
## -----------------------------------------------------------------------------
server <- function(input, output, session)
{
output$plot <- renderPlot({
date <- input$start_date + seq_len(input$num_days) - 1;
xpts <- as.POSIXlt(date)$yday; # day number, 0-365
temperature <- cos(2 * pi * xpts / 364) *
ifelse(input$southern, 1, -1) * as.numeric(input$temp_range) +
input$avg_temp;
oldpar <- par(mar = c(5, 5, 1, 2))
plot(date, temperature, type = "l", ylim = c(-15, 55),
col = input$colour %% 16 + 1, lwd = 3)
abline(h = 0, col = 8, lty = 2)
par(oldpar)
})
observeEvent(input$reset, {
update_inline("start_date", value = "2025-01-01")
update_inline("num_days", value = 365)
update_inline("avg_temp", value = 20)
update_inline("temp_range", value = "10")
update_inline("southern", value = FALSE)
})
}
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.