เพิ่มเส้นโค้ง smooth: checkbox input
ต่างจาก text input และ numeric input ตรงที่ checkbox input มีค่าได้เพียงสองแบบเท่านั้น คือ TRUE หรือ FALSE เมื่อผู้ใช้เลือก checkbox input ค่าของ input จะเป็น TRUE และหากยกเลิกการเลือก ค่าจะกลับเป็น FALSE
โปรดสังเกตว่าพารามิเตอร์ value ของฟังก์ชัน checkboxInput() ซึ่งกำหนดค่าเริ่มต้นนั้น สามารถตั้งค่าได้เฉพาะ TRUE หรือ FALSE เท่านั้น
โค้ดของ Shiny app จากแบบฝึกหัดที่แล้วถูกนำมาใช้โดยมีการปรับเปลี่ยนเล็กน้อย โดย plot object ของ ggplot ภายใน renderPlot() ได้ถูกกำหนดให้กับตัวแปร p แล้ว
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
กรณีศึกษา: การสร้างเว็บแอปพลิเคชันด้วย Shiny ใน R
คำแนะนำการฝึกหัด
ให้เพิ่ม checkbox input ที่เมื่อเลือกแล้วจะแสดงเส้นที่เหมาะสมที่สุด (line of best fit) บนกราฟ โดยมีรายละเอียดดังนี้
- เพิ่ม checkbox input ใน UI โดยกำหนด ID เป็น "fit", label เป็น "Add line of best fit" และสถานะเริ่มต้นเป็นยังไม่ได้เลือก
- เพิ่มโค้ดใน server เพื่อให้เมื่อเลือก checkbox แล้ว จะมีการเพิ่มเส้นที่เหมาะสมที่สุดลงในกราฟ โดยโค้ดสำหรับการเพิ่มเส้นดังกล่าวได้เตรียมไว้ให้แล้ว (บรรทัดที่ 26)
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Define UI for the application
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
textInput("title", "Title", "GDP vs life exp"),
numericInput("size", "Point size", 1, 1),
# Add a checkbox for line of best fit
___
),
mainPanel(
plotOutput("plot")
)
)
)
# Define the server logic
server <- function(input, output) {
output$plot <- renderPlot({
p <- ggplot(gapminder, aes(gdpPercap, lifeExp)) +
geom_point(size = input$size) +
scale_x_log10() +
ggtitle(input$title)
# When the "fit" checkbox is checked, add a line
# of best fit
if (___) {
p <- p + geom_smooth(method = "lm")
}
p
})
}
# Run the application
shinyApp(ui = ui, server = server)