BaşlayınÜcretsiz Başlayın

Mutfakları keşfet: kelime bulutları

Umarım bu yemek temalı Shiny uygulamalarını geliştirirken keyif alıyorsundur! Çok miktarda veriyi görselleştirmenin kullanışlı bir yolu kelime bulutlarıdır. Bu egzersizde, önceki derste oluşturduğumuz Shiny uygulamasını genişletecek ve en ayırt edici malzemeleri etkileşimli bir kelime bulutu olarak gösteren yeni bir sekme ekleyeceksin.

Seçilen mutfağa göre en üst malzemelerin etkileşimli kelime bulutunu gösteren bir uygulama

shiny, dplyr, ggplot2, plotly ve d3wordcloud paketlerini zaten yükledik. İşte bir kelime bulutu oluşturmak için kullanışlı bir kod parçası.

d3wordcloud(
  words = c('hello', 'world', 'good'), 
  freqs = c(20, 40, 30),
  tooltip = TRUE
)

Bu egzersiz

R ile Shiny Kullanarak Web Uygulamaları Geliştirme

kursunun bir parçasıdır
Kursu Görüntüle

Egzersiz talimatları

  • UI: wc_ingredients adlı bir d3wordcloudOutput() ekle ve bunu bir tabPanel() içinde sarmala. Bu, uygulamandaki ilk tabPanel() olmalı.
  • Server: En üst malzemelerin ve kullanıldıkları tarif sayılarının etkileşimli bir kelime bulutunu d3wordcloud::renderD3wordcloud() kullanarak oluştur ve çıktıyı wc_ingredients adına ata. Tarif sayılarıyla birlikte en üst malzemeleri içeren bir veri çerçevesi döndürmek için rval_top_ingredients() adlı tepkisel ifadeyi kullanman gerekecek.

Uygulamalı interaktif egzersiz

Bu örnek kodu tamamlayarak bu egzersizi bitirin.

ui <- fluidPage(
  titlePanel('Explore Cuisines'),
  sidebarLayout(
    sidebarPanel(
      selectInput('cuisine', 'Select Cuisine', unique(recipes$cuisine)),
      sliderInput('nb_ingredients', 'Select No. of Ingredients', 5, 100, 20),
    ),
    mainPanel(
      tabsetPanel(
        # CODE BELOW: Add `d3wordcloudOutput` named `wc_ingredients` in a `tabPanel`
        
        tabPanel('Plot', plotly::plotlyOutput('plot_top_ingredients')),
        tabPanel('Table', DT::DTOutput('dt_top_ingredients'))
      )
    )
  )
)

server <- function(input, output, session){
  # CODE BELOW: Render an interactive wordcloud of top ingredients and 
  # the number of recipes they get used in, using `d3wordcloud::renderD3wordcloud`,
  # and assign it to an output named `wc_ingredients`.
  
  
  
  
  rval_top_ingredients <- reactive({
    recipes_enriched %>% 
      filter(cuisine == input$cuisine) %>% 
      arrange(desc(tf_idf)) %>% 
      head(input$nb_ingredients) %>% 
      mutate(ingredient = forcats::fct_reorder(ingredient, tf_idf))
  })
  output$plot_top_ingredients <- plotly::renderPlotly({
    rval_top_ingredients() %>%
      ggplot(aes(x = ingredient, y = tf_idf)) +
      geom_col() +
      coord_flip()
  })
  output$dt_top_ingredients <- DT::renderDT({
    recipes %>% 
      filter(cuisine == input$cuisine) %>% 
      count(ingredient, name = 'nb_recipes') %>% 
      arrange(desc(nb_recipes)) %>% 
      head(input$nb_ingredients)
  })
}

shinyApp(ui = ui, server= server)
Kodu Düzenle ve Çalıştır