डेटा का प्लॉट बनाएँ
याद रखें कि प्लॉट आउटपुट ऑब्जेक्ट होते हैं, और इसलिए Shiny ऐप में उन्हें plotOutput() + renderPlot() फंक्शनों से जोड़ा जाता है. आउटपुट फंक्शन UI में यह तय करता है कि प्लॉट कहाँ दिखेगा, और सर्वर कोड में रेंडर फंक्शन प्लॉट जनरेट करने के लिए ज़िम्मेदार होता है.
आपका काम है ऐप में GDP per capita बनाम life expectancy का प्लॉट जोड़ना. प्लॉट में वही डेटा इस्तेमाल होना चाहिए जो टेबल में दिख रहा है; यानी प्लॉट में वही रिकॉर्ड दिखें जो इनपुट फ़िल्टर्स से मेल खाते हों. renderPlot() के अंदर के कोड को renderTable() के अंदर परिभाषित किसी भी वैरिएबल तक पहुँच नहीं होती, इसलिए आपको सचमुच वही कोड कॉपी करके दोबारा उपयोग करना होगा. आगे चलकर हम सीखेंगे कि इस डुप्लिकेशन से कैसे बचें.
यह अभ्यास पाठ्यक्रम का हिस्सा है
केस स्टडीज़: R में Shiny के साथ वेब एप्लिकेशन बनाना
अभ्यास निर्देश
- UI में "plot" आईडी के साथ प्लॉट आउटपुट के लिए एक प्लेसहोल्डर जोड़ें.
- सर्वर में, उपयुक्त render फंक्शन का उपयोग करके प्लॉट बनाएँ (लाइन 30).
- प्लॉट डेटा के लिए वही डेटा-फ़िल्टरिंग कोड दोबारा उपयोग करें जो आउटपुट टेबल इस्तेमाल करती है (लाइन 32).
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
ui <- fluidPage(
h1("Gapminder"),
sliderInput(inputId = "life", label = "Life expectancy",
min = 0, max = 120,
value = c(30, 50)),
selectInput("continent", "Continent",
choices = c("All", levels(gapminder$continent))),
# Add a plot output
___(___),
tableOutput("table")
)
server <- function(input, output) {
output$table <- renderTable({
data <- gapminder
data <- subset(
data,
lifeExp >= input$life[1] & lifeExp <= input$life[2]
)
if (input$continent != "All") {
data <- subset(
data,
continent == input$continent
)
}
data
})
# Create the plot render function
output$plot <- ___({
# Use the same filtered data code that the table uses
data <- ___
___
___
ggplot(data, aes(gdpPercap, lifeExp)) +
geom_point() +
scale_x_log10()
})
}
shinyApp(ui, server)