دمج تطبيقات ShinyLive في موقع pkgdown على صفحات GitHub

دمج تطبيقات ShinyLive في موقع pkgdown على صفحات GitHub
دمج تطبيقات ShinyLive في موقع pkgdown على صفحات GitHub

تعزيز التفاعل لغير المبرمجين مع ShinyLive

تعد استضافة مجموعات البيانات والوظائف المساعدة على صفحات GitHub طريقة ممتازة لتسهيل الوصول إلى الموارد. بالنسبة للمطورين الذين يعملون مع R، يمكن أن يؤدي تكامل التفاعل إلى تعزيز مشاركة المستخدم، خاصة بالنسبة لغير المبرمجين الذين يستكشفون بياناتك. يقدم ShinyLive حلاً عمليًا لتضمين مثل هذا التفاعل مباشرة في موقع ويب pkgdown.

على الرغم من توفر الموارد اللازمة لدمج تطبيقات Shiny في حزم R أو صفحات GitHub، لا تزال هناك فجوة معرفية حول الجمع بين ShinyLive ومواقع pkgdown بشكل فعال. باعتبارك شخصًا يحتفظ بحزم R صغيرة تحتوي على مجموعات بيانات ووظائف مساعدة، فمن المحتمل أن تهدف إلى جعل استكشاف البيانات أمرًا بديهيًا وسهل الاستخدام. بإمكان ShinyLive سد هذه الفجوة.

يوفر دمج تطبيق Shiny في قسم "المقالات" بموقع pkgdown الإلكتروني الخاص بك طريقة مبسطة لتقديم ميزات تفاعلية دون التحميل الزائد على وثائق حزمة R. تضمن هذه الطريقة أنه حتى المستخدمين غير المعتادين على البرمجة يمكنهم بسهولة تقسيم البيانات وتصورها. إنه فوز مربح للمطورين والمستخدمين على حد سواء! 🚀

على سبيل المثال، تخيل مجموعة بيانات صحية حيث يمكن للمستخدمين تصفية البيانات السكانية حسب التركيبة السكانية. باستخدام ShinyLive، يمكنك إنشاء هذا التطبيق ونشره على صفحات GitHub، مما يتيح الوصول إلى البيانات بطريقة ديناميكية. تستكشف هذه المقالة كيفية تحقيق ذلك خطوة بخطوة من خلال إعداد التطبيق الحالي لديك. 🛠️

يأمر مثال للاستخدام
selectInput يُستخدم في Shiny UI لإنشاء قائمة منسدلة لتحديد الخيارات. مثال: حدد الإدخال ("فار"، "حدد المتغير:"، الخيارات = الأسماء (mtcars)). وهذا يسمح بإدخال المستخدم الديناميكي لاختيار المتغير.
sliderInput ينشئ عنصر واجهة مستخدم لإدخال شريط التمرير في Shiny للسماح للمستخدمين بتحديد نطاق من القيم. مثال: SliderInput("range"، "نطاق التصفية:"، الحد الأدنى = 0، الحد الأقصى = 100، القيمة = c(25، 75)). ضروري للتصفية التفاعلية.
renderPlot يستخدم في منطق الخادم Shiny لإنشاء قطع أرض ديناميكيًا بناءً على إدخال المستخدم. مثال: إخراج $ مؤامرة
filter A function from dplyr to subset data based on conditions. Example: filter(get(input$var) >دالة من dplyr إلى بيانات المجموعة الفرعية بناءً على الشروط. مثال: مرشح (get(input$var) >= input$range[1]). مفيد لتطبيق المرشحات المعرفة من قبل المستخدم على مجموعات البيانات.
aes_string يُستخدم في ggplot2 لإعداد الجماليات برمجيًا مثل محاور x وy. مثال: aes_string(x = input$var). مثالية لتوليد مؤامرة ديناميكية.
geom_histogram طبقة ggplot2 لإنشاء تصورات الرسم البياني. مثال: Geom_histogram (الصناديق = 10، التعبئة = "أزرق"، اللون = "أبيض"). مفيد لتصور التوزيعات في التطبيق.
uses بناء جملة YAML في إجراءات GitHub لتحديد الإجراءات القابلة لإعادة الاستخدام. مثال: الاستخدامات: action/checkout@v3. يضمن التكامل السلس مع سير العمل المحدد مسبقًا.
shinylive.js مكتبة JavaScript لتشغيل تطبيقات Shiny في المتصفح. مثال: . يتيح تضمين التطبيقات اللامعة في صفحات HTML الثابتة.
Shinylive.App تهيئة وتشغيل تطبيق ShinyLive في حاوية HTML محددة. مثال: const app = new Shinylive.App("#shiny-app");. يوفر وظائف التطبيق المستندة إلى المتصفح.
sliderInput يقوم بإنشاء إدخال شريط التمرير لتحديد النطاق الرقمي. مثال: SliderInput("range"، "نطاق التصفية:"، الحد الأدنى = 0، الحد الأقصى = 100، القيمة = c(25، 75)). يضيف تصفية النطاق الديناميكي للمستخدمين.

إنشاء أدوات تفاعلية لاستكشاف البيانات باستخدام Shinylive

يركز البرنامج النصي الأول، الذي تم إنشاؤه باستخدام R وShiny، على إنشاء واجهة ديناميكية تسمح للمستخدمين باستكشاف مجموعات البيانات بشكل تفاعلي. ال حدد الإدخال يعد الأمر ضروريًا لتمكين المستخدمين من اختيار المتغيرات من القائمة المنسدلة ديناميكيًا، وتخصيص التطبيق وفقًا لاحتياجاتهم. يقترن مع SliderInput، يمكن للمستخدمين تحسين استكشافهم بشكل أكبر عن طريق تحديد نطاق معين من القيم لتصفية البيانات. على سبيل المثال، في مجموعة بيانات مثل com.mtcars، يمكن للمستخدمين تحديد "mpg" كمتغير واستخدام شريط التمرير لعزل السيارات التي قطعت مسافة تتراوح بين 20 و30. ويضمن هذا المزيج واجهة سهلة الاستخدام وبديهية. 🚀

يكمل المنطق من جانب الخادم واجهة المستخدم عن طريق إنشاء مخرجات تفاعلية بناءً على مدخلات المستخدم. هنا، renderPlot تعد الوظيفة أمرًا بالغ الأهمية - فهي تعالج مجموعة البيانات التي تمت تصفيتها وتنشئ تصورات ديناميكية بسرعة. تكامل dplyr فلتر تتيح الوظيفة إجراء عملية فرعية سلسة لمجموعة البيانات، بينما تسمح وظيفة ggplot2 Geom_histogram يضمن مؤامرات جذابة وغنية بالمعلومات. تخيل مجموعة بيانات صحية حيث يمكن للمستخدم تصفية الفئات العمرية ورؤية توزيع مقاييس الصحة على الفور - يجعل هذا البرنامج النصي هذا التفاعل ممكنًا بأقل جهد للمطورين.

يركز البرنامج النصي الثاني على أتمتة النشر باستخدام إجراءات GitHub. وهذا مهم بشكل خاص لصيانة وتحديث مواقع pkgdown بكفاءة. من خلال الاستفادة من أ نشر-app.yaml الملف، يمكنك أتمتة عملية دفع التحديثات ونشر تطبيق ShinyLive. الأوامر الرئيسية مثل الإجراءات/الخروج@v3 تأكد من استخدام أحدث التعليمات البرمجية من المستودع، بينما يتكامل الإعداد الخاص بـ Shinylive بسلاسة في سير العمل. على سبيل المثال، تخيل تحديث تطبيقك باستخدام مرشحات أو ميزات جديدة - تضمن هذه الأتمتة ظهور التغييرات عبر الإنترنت على الفور، مما يوفر الوقت ويقلل الأخطاء اليدوية. ⚙️

يتضمن الحل الثالث تغليف تطبيق Shiny في ملف HTML ثابت. باستخدام Shinylive.js، يمكن للمطورين تضمين التطبيق مباشرة في موقع pkgdown الخاص بهم، متجاوزًا الحاجة إلى خادم R نشط. تجعل هذه الطريقة التطبيق في متناول المستخدمين دون تثبيت R، مما يعزز إمكانية الوصول. على سبيل المثال، يمكن للمدرس مشاركة تطبيق تفاعلي حول البيانات السكانية مع الطلاب، الذين يمكنهم استكشافها مباشرة من متصفحاتهم. يعد هذا الحل ذا قيمة خاصة بالنسبة لغير المبرمجين، لأنه يحول مجموعات البيانات المعقدة إلى تجربة جذابة وتعليمية. 🌐

تضمين تطبيق لامع في موقع pkgdown باستخدام Shinylive

الحل 1: R مع Shinylive لتكامل الواجهة الأمامية والخلفية

# app.R
# Load necessary libraries
library(shiny)
library(dplyr)
library(ggplot2)

# UI definition
ui <- fluidPage(
  titlePanel("Interactive Data Viewer"),
  sidebarLayout(
    sidebarPanel(
      selectInput("var", "Select Variable:",
                  choices = names(mtcars)),
      sliderInput("range", "Filter Range:",
                  min = 0, max = 100, value = c(25, 75))
    ),
    mainPanel(plotOutput("plot"))
  )
)

# Server logic
server <- function(input, output) {
  output$plot <- renderPlot({
    data <- mtcars %>%
      filter(get(input$var) >= input$range[1],
             get(input$var) <= input$range[2])
    ggplot(data, aes_string(x = input$var)) +
      geom_histogram(bins = 10, fill = "blue", color = "white")
  })
}

# Run the app
shinyApp(ui, server)

نشر Shinylive باستخدام إجراءات GitHub

الحل 2: أتمتة النشر باستخدام إجراءات GitHub وShinylive

# deploy-app.yaml
# Workflow configuration
name: Deploy ShinyLive App

on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout repository
      uses: actions/checkout@v3

    - name: Set up R
      uses: r-lib/actions/setup-r@v2

    - name: Install dependencies
      run: |
        Rscript -e "install.packages(c('shiny', 'shinylive'))"

    - name: Deploy app
      uses: posit-dev/r-shinylive@actions-v1
      with:
        app-dir: ./

إضافة غلاف HTML ثابت لتطبيق Shiny

الحل 3: تغليف تطبيق Shiny بتنسيق HTML ثابت لتكامل pkgdown

< !-- index.html -->
<!DOCTYPE html>
<html>
<head>
  <title>Interactive Shiny App</title>
  <script src="shinylive.js"></script>
</head>
<body>
  <div id="shiny-app"></div>
  <script>
    const app = new Shinylive.App("#shiny-app");
    app.run();
  </script>
</body>
</html>

تحسين إمكانية الوصول والأداء لمواقع pkgdown باستخدام ShinyLive

إحدى المزايا القوية للاستخدام ShinyLive هي قدرته على تمكين التفاعل المستقل دون الاعتماد على خادم R نشط. وهذا يجعلها مثالية لاستضافة التطبيقات على منصات ثابتة مثل صفحات GitHub. على عكس تطبيقات Shiny التقليدية التي تحتاج إلى دعم مستمر للخادم، يقوم ShinyLive بتحويل تطبيقك إلى حزمة JavaScript قائمة بذاتها. يمكن تضمين هذه الحزمة مباشرةً في موقع pkgdown الإلكتروني الخاص بك، مما يسمح للمستخدمين باستكشاف مجموعات البيانات الخاصة بك بسلاسة من أي متصفح. على سبيل المثال، إذا كانت حزمة R الخاصة بك تتضمن مجموعة بيانات لمقاييس جودة الهواء، فيمكن للمستخدمين تصفية البيانات وتصورها ديناميكيًا دون الحاجة إلى تثبيت أي برامج إضافية. 🌍

فائدة أخرى تكمن في قدرتها على التكيف مع غير المبرمجين. من خلال دمج ميزات مثل القوائم المنسدلة وشرائح التمرير، يمكنك إنشاء بيئة حيث يمكن لأي شخص التفاعل مع بياناتك. على سبيل المثال، يمكن لمهني الصحة فحص البيانات السكانية عن طريق اختيار الفئات العمرية أو المناطق دون الحاجة إلى كتابة سطر واحد من التعليمات البرمجية. يضمن الجمع بين ShinyLive وGitHub Pages إمكانية الوصول بسهولة إلى هذه الميزات التفاعلية وبديهية، مما يجعل مشروعك مؤثرًا للغاية بالنسبة لجمهور أوسع. 🧩

علاوة على ذلك، يعمل ShinyLive على تحسين أداء موقع pkgdown الإلكتروني الخاص بك عن طريق تحسين الموارد المطلوبة لتشغيل التطبيق. نظرًا لأنه يتم تجميع المنطق بالكامل في JavaScript، يتم تحميل التطبيقات بشكل أسرع وتوفر تفاعلًا أكثر سلاسة. يعد هذا مفيدًا بشكل خاص لعرض مجموعات البيانات الكبيرة، حيث قد يؤدي عرض المخططات أو تطبيق المرشحات إلى حدوث تأخيرات. والنتيجة هي تجربة مستخدم احترافية تتوافق مع معايير الويب الحديثة وتوقعات إمكانية الوصول. 🚀

الأسئلة المتداولة حول استخدام ShinyLive على مواقع pkgdown

  1. كيف أقوم بتضمين تطبيق Shiny في موقع pkgdown الإلكتروني؟
  2. يمكنك استخدام ShinyLive لتحويل تطبيق Shiny الخاص بك إلى حزمة JavaScript وتضمينه في ملف Articles قسم من موقع pkgdown الخاص بك.
  3. هل من الضروري أن يكون لديك خادم R مباشر لتطبيقات ShinyLive؟
  4. لا، تطبيقات ShinyLive مستقلة ويمكن تشغيلها مباشرة في المتصفح دون الحاجة إلى خادم R نشط.
  5. هل يمكنني تحديث التطبيق تلقائيًا عندما أقوم بإجراء التغييرات على GitHub؟
  6. نعم، يمكنك استخدام GitHub Actions لأتمتة النشر. سير العمل مثل deploy-app.yaml يمكن التعامل مع هذا بالنسبة لك.
  7. ما أنواع تفاعلات المستخدم التي يمكنني تضمينها؟
  8. يمكنك إضافة ميزات مثل selectInput للقوائم المنسدلة و sliderInput للنطاقات الرقمية لجعل تطبيقك تفاعليًا للغاية.
  9. هل ShinyLive مناسب لغير المبرمجين؟
  10. قطعاً! يسمح ShinyLive لغير المبرمجين باستكشاف البيانات من خلال الأدوات التفاعلية، مما يجعلها أداة رائعة لإمكانية الوصول.

أصبح استكشاف البيانات التفاعلية أمرًا سهلاً

يوفر ShinyLive حلاً سهل الاستخدام لدمج التفاعل في مواقع pkgdown. من خلال تحويل تطبيقات Shiny إلى حزم JavaScript جاهزة للمتصفح، فإنها تفتح الأبواب أمام تصور البيانات الجذاب للمستخدمين من جميع مستويات المهارة. على سبيل المثال، يمكن استكشاف مجموعة البيانات المتعلقة بالتركيبة السكانية باستخدام قوائم منسدلة وشرائح تمرير بسيطة. 🌟

يؤدي الجمع بين ShinyLive وGitHub Actions إلى تبسيط عملية النشر، مما يضمن بقاء موقع الويب الخاص بك محدثًا دون عناء. سواء كنت مطورًا أو متخصصًا في البيانات، فإن هذا النهج يسد الفجوة بين المحتوى الفني وتجربة المستخدم البديهية، مما يجعل قصص بياناتك تنبض بالحياة في متصفح الويب. 📊

المصادر والمراجع
  1. المحتوى والأمثلة مستوحاة من الوثائق والبرامج التعليمية الرسمية لـ ShinyLive. لمزيد من التفاصيل، قم بزيارة مقدمة شيني لايف .
  2. يتم تكييف سير عمل النشر من مستودع ShinyLive جيثب ، والذي يتضمن نماذج سير عمل GitHub Actions ونصائح التكامل.
  3. تم توجيه استراتيجية التكامل pkgdown بواسطة وثائق pkgdown ، والذي يقدم رؤى حول إنشاء وإدارة مواقع التوثيق لحزم R.
  4. جاء الإلهام الإضافي من استكشاف المثال الحي في صفحة SC السكانية على GitHub ، والذي يعرض تطبيق ShinyLive في العالم الحقيقي في pkgdown.