plotly के साथ इंटरएक्टिव प्लॉट्स

shinydashboard के साथ डैशबोर्ड बनाना

Png Kee Seng

Researcher

उदाहरण: लंदन में Airbnb लिस्टिंग्स

  • मान लें हम लंदन की एक टूर एजेंसी में काम कर रहे हैं
  • Airbnb के साथ सहयोग किया गया
    library(tidyverse)
    listings <- read_csv("../data/listings.csv")
    
...
 $ host_name                     : chr [1:69351] "Susie" "Alina" "Luca" "Simon" ...
 $ neighbourhood_group           : logi [1:69351] NA NA NA NA NA NA ...
 $ neighbourhood                 : chr [1:69351] "Tower Hamlets" "Islington" "Tower Hamlets" "Islington" ...
 $ latitude                      : num [1:69351] 51.5 51.6 51.5 51.5 51.5 ...
 $ longitude                     : num [1:69351] -0.054 -0.1127 -0.0743 -0.1048 -0.2 ...
 $ room_type                     : chr [1:69351] "Private room" "Private room" "Entire home/apt" "Private room" ...
 $ price                         : num [1:69351] 55 50 90 180 297 75 204 379 90 30 ...
 $ minimum_nights                : num [1:69351] 3 1 5 4 14 3 2 4 3 7 ...
 $ number_of_reviews             : num [1:69351] 65 30 42 493 6 89 581 51 104 32 ...
 $ last_review                   : Date[1:69351], format: "2016-06-10" "2022-07-15" "2022-01-04" "2022-09-02" ...
 $ reviews_per_month             : num [1:69351] 0.47 0.2 0.34 3.59 0.05 0.57 4.26 0.36 0.86 0.29 ...
 $ calculated_host_listings_count: num [1:69351] 1 2 1 5 1 1 1 5 1 1 ...
 $ availability_365              : num [1:69351] 74 343 222 236 180 70 193 249 318 251 ...
...
shinydashboard के साथ डैशबोर्ड बनाना

plotly से शुरुआत

  • plotly लाइब्रेरी इम्पोर्ट करें

    library(plotly)
    
  • ggplotly() में ggplot ऑब्जेक्ट रखने पर plotly ऑब्जेक्ट बनता है

    ggplotly(<ggplot object>)
    
shinydashboard के साथ डैशबोर्ड बनाना

ggplot से बबल प्लॉट

  • एक बबल प्लॉट बनाएँ और उसे bubble के रूप में सेव करें
    • औसत price और availability_365 के बीच संबंध दिखाएँ
    • हर room_type के लिए अलग रंग के बबल
    • बबल का आकार लिस्टिंग्स की संख्या के अनुपात में हो
    • साज-सज्जा के लिए कुछ लेयर्स जोड़ें
bubble <- listings %>%

group_by(room_type, neighbourhood) %>% summarise(avg_price = mean(price, na.rm=TRUE), avg_availability = mean(availability_365, na.rm=TRUE),
Count = n(), .groups = "drop") %>%
ggplot(aes(x = avg_price, y = avg_availability,
color = room_type,
size = Count)) +
geom_point() +
labs(x = "Average price", y = "Average availability", color = "Room type") + theme_classic()
shinydashboard के साथ डैशबोर्ड बनाना

ggplot से बना बबल प्लॉट, रेंडर हुआ

ggplot से बनाया गया एक सामान्य बबल प्लॉट.

shinydashboard के साथ डैशबोर्ड बनाना

plotly के साथ इंटरएक्टिव बबल प्लॉट

  • bubble को ggplotly() में रखें
ggplotly(bubble)

एक इंटरएक्टिव plotly बबल प्लॉट.

shinydashboard के साथ डैशबोर्ड बनाना

plotly के साथ क्षैतिज बॉक्सप्लॉट्स

  • कुछ प्लॉट सही से कन्वर्ट नहीं होते

  • क्षैतिज बॉक्सप्लॉट्स की एक सीरीज़ बनाएँ

    • room_type के अनुसार availability_365 का वितरण दिखाएँ
  • ggplotly() से कन्वर्ज़न काम नहीं करता
boxH <- listings %>%

ggplot(aes(x = availability_365, y=room_type)) +
geom_boxplot() +
labs(x="Availbility (out of 365 days)", y="Room type") + theme_classic()
ggplotly(boxH)

ggplot से बने क्षैतिज बॉक्सप्लॉट्स.

ggplotly से कन्वर्ट किए गए क्षैतिज बॉक्सप्लॉट्स.

shinydashboard के साथ डैशबोर्ड बनाना

plotly के साथ ऊर्ध्वाधर बॉक्सप्लॉट्स

  • aes() में x और y बदलें
  • अब plotly कन्वर्ज़न काम करेगा
boxV <- listings %>%

ggplot(aes(y = availability_365, x=room_type)) + geom_boxplot() + labs(y="Availbility (out of 365 days)", x="Room type") + theme_classic()
ggplotly(boxV)

ggplot से बने ऊर्ध्वाधर बॉक्सप्लॉट्स.

ggplotly के साथ ऊर्ध्वाधर बॉक्सप्लॉट्स.

shinydashboard के साथ डैशबोर्ड बनाना

plotly में क्षैतिज बॉक्सप्लॉट्स ठीक करना

  • अगर हमें क्षैतिज बॉक्स प्लॉट चाहिए?
    • coord_flip() जोड़ें
  • हम facet_wrap() भी उपयोग कर सकते हैं
    • हर पैनल पर्याप्त बड़ा होना चाहिए
ggplotly(boxV + coord_flip())
ggplotly(boxV + coord_flip() + 
    facet_wrap(~neighbourhood))

पलटे हुए ऊर्ध्वाधर plotly बॉक्सप्लॉट्स.

फैसेटेड plotly बॉक्सप्लॉट्स.

shinydashboard के साथ डैशबोर्ड बनाना

अभ्यास करते हैं!

shinydashboard के साथ डैशबोर्ड बनाना

Preparing Video For Download...