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, kursun bir parçasıdır

R ile Shiny Kullanarak Web Uygulamaları Geliştirme

Kursa Göz Atın

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ı etkileşimli egzersiz

Bu egzersizi bu örnek kodu tamamlayarak deneyin.

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