Shiny অ্যাপ্লিকেশন তৈরি করতে UI (User Interface) এবং Server দুটি গুরুত্বপূর্ণ কম্পোনেন্ট তৈরি করতে হয়। UI অংশে আমরা ব্যবহারকারীর ইন্টারফেস ডিজাইন করি, যেখানে ব্যবহারকারী অ্যাপ্লিকেশনটির সাথে ইন্টারঅ্যাক্ট করে। Server অংশে, আমরা ডেটা প্রসেসিং, বিশ্লেষণ এবং ফাংশনগুলি ব্যবহারকারী ইনপুটের উপর ভিত্তি করে ফলাফল প্রদান করার জন্য লিখি।
নিচে শো করা হয়েছে কিভাবে UI এবং Server তৈরি করে একটি শাইনির অ্যাপ্লিকেশন তৈরি করা যায়।
Shiny UI এবং Server তৈরি করার পদ্ধতি
১. UI (User Interface) তৈরি করা
Shiny অ্যাপ্লিকেশনে UI হলো ব্যবহারকারীর ইন্টারফেস যা fluidPage(), navbarPage(), sidebarLayout(), ইত্যাদি ফাংশন দিয়ে তৈরি করা হয়। এটি আপনার অ্যাপ্লিকেশনটির লেআউট এবং ডিজাইন নিয়ন্ত্রণ করে।
২. Server তৈরি করা
Server ফাংশনটি হলো সেগমেন্ট যা ডেটা প্রক্রিয়াকরণ এবং ইনপুটের উপর ভিত্তি করে আউটপুট প্রদান করে। এটি renderText(), renderPlot(), renderTable() ইত্যাদি ফাংশন ব্যবহার করে আউটপুট তৈরি করে।
উদাহরণ: Basic Shiny UI এবং Server
library(shiny)
# UI অংশ তৈরি করা
ui <- fluidPage(
# Title Panel
titlePanel("Basic Shiny Application"),
# Sidebar Layout
sidebarLayout(
sidebarPanel(
# Slider Input
sliderInput("num",
label = "Choose a number:",
min = 1,
max = 100,
value = 50)
),
mainPanel(
# Output text
textOutput("value")
)
)
)
# Server অংশ তৈরি করা
server <- function(input, output) {
# Render text based on slider input
output$value <- renderText({
paste("The selected number is", input$num)
})
}
# Shiny অ্যাপ চালানো
shinyApp(ui = ui, server = server)
ব্যাখ্যা:
- fluidPage(): একটি রেসপন্সিভ লেআউট তৈরি করে যেটি বিভিন্ন স্ক্রীন সাইজে মানানসই হয়।
- sliderInput(): একটি স্লাইডার তৈরি করে, যা ব্যবহারকারীকে একটি সংখ্যার পরিসর থেকে মান নির্বাচনের সুযোগ দেয়।
- textOutput(): UI-তে টেক্সট আউটপুট প্রদর্শন করতে ব্যবহৃত হয়।
- renderText():
serverঅংশে, স্লাইডার ইনপুট পরিবর্তিত হলে renderText() ব্যবহার করে ডাইনামিকভাবে আউটপুট তৈরি করা হয়।
৩. আরও জটিল UI তৈরি করা
Shiny UI-তে আরও কাস্টমাইজড উপাদান যোগ করা যায়, যেমন চেকবক্স, রেডিও বাটন, ড্রপডাউন মেনু ইত্যাদি। আপনি গ্রাফ, টেবিল, চিত্র এবং অন্যান্য ইন্টারঅ্যাকটিভ উপাদানও যোগ করতে পারেন।
উদাহরণ: Checkbox এবং Plot তৈরি করা
library(shiny)
# UI অংশ তৈরি করা
ui <- fluidPage(
# Title Panel
titlePanel("Interactive Plot Example"),
# Sidebar Layout
sidebarLayout(
sidebarPanel(
# Checkbox input
checkboxInput("show", "Show Plot", value = TRUE)
),
mainPanel(
# Plot output
plotOutput("distPlot")
)
)
)
# Server অংশ তৈরি করা
server <- function(input, output) {
# Render Plot
output$distPlot <- renderPlot({
# শুধু checkbox এর ভিত্তিতে প্লট দেখানো
if (input$show) {
hist(rnorm(500)) # 500 রেনডম নম্বরের হিস্টোগ্রাম
}
})
}
# Shiny অ্যাপ চালানো
shinyApp(ui = ui, server = server)
ব্যাখ্যা:
- checkboxInput(): এটি একটি চেকবক্স তৈরি করে যার মাধ্যমে ব্যবহারকারী প্লটটি দেখানোর বা না দেখানোর সিদ্ধান্ত নিতে পারে।
- renderPlot(): এটি UI-তে ডাইনামিক গ্রাফ বা প্লট তৈরি করতে ব্যবহৃত হয়।
- rnorm(): 500টি রেনডম নম্বর জেনারেট করা এবং তার উপর একটি হিস্টোগ্রাম তৈরি করা।
৪. Input থেকে Output পর্যন্ত Reactivity (ডাইনামিক আউটপুট)
Shiny অ্যাপ্লিকেশনগুলির প্রধান বৈশিষ্ট্য হল reactivity—যা মানে হলো যে ব্যবহারকারী ইনপুট পরিবর্তন করলে আউটপুটও স্বয়ংক্রিয়ভাবে পরিবর্তিত হয়।
উদাহরণ: Reactive Plot with Multiple Inputs
library(shiny)
# UI অংশ তৈরি করা
ui <- fluidPage(
titlePanel("Reactive Plot Example"),
sidebarLayout(
sidebarPanel(
# Slider Input for X-axis range
sliderInput("xrange", "X-axis Range", min = 1, max = 100, value = c(10, 90)),
# Slider Input for Y-axis range
sliderInput("yrange", "Y-axis Range", min = 1, max = 100, value = c(10, 90))
),
mainPanel(
plotOutput("scatterPlot")
)
)
)
# Server অংশ তৈরি করা
server <- function(input, output) {
output$scatterPlot <- renderPlot({
# Scatter plot generation based on input ranges
plot(x = runif(100, min = input$xrange[1], max = input$xrange[2]),
y = runif(100, min = input$yrange[1], max = input$yrange[2]),
xlab = "X-axis", ylab = "Y-axis", main = "Reactive Scatter Plot")
})
}
# Shiny অ্যাপ চালানো
shinyApp(ui = ui, server = server)
ব্যাখ্যা:
- sliderInput(): দুটি স্লাইডার ইনপুট তৈরি করে, একটি X-অক্ষ এবং আরেকটি Y-অক্ষের জন্য।
- renderPlot(): ইনপুটের উপর ভিত্তি করে প্লটটি রেন্ডার করে। যখন ব্যবহারকারী স্লাইডার পরিবর্তন করবে, তখন গ্রাফটি পরিবর্তিত হবে।
সারাংশ
Shiny অ্যাপ্লিকেশন তৈরির জন্য দুটি প্রধান অংশ প্রয়োজন: UI (User Interface) এবং Server। UI অংশে ডাইনামিক এলিমেন্ট যেমন স্লাইডার, চেকবক্স, প্লট, ইত্যাদি তৈরি করা হয়, আর Server অংশে সেই ইনপুটের উপর ভিত্তি করে ডেটা প্রক্রিয়া এবং আউটপুট তৈরি করা হয়। Shiny অ্যাপ্লিকেশনগুলির প্রধান বৈশিষ্ট্য হল তাদের reactivity, যেখানে ব্যবহারকারী ইনপুট পরিবর্তন করলে আউটপুট স্বয়ংক্রিয়ভাবে পরিবর্তিত হয়। Shiny-এর মাধ্যমে আপনি সহজেই ইন্টারঅ্যাকটিভ ওয়েব অ্যাপ্লিকেশন তৈরি করতে পারবেন।
Read more