MulaiMulai sekarang secara gratis

Jelajahi kuliner: bahan teratas (versi lanjutan)

Setiap jenis kuliner memiliki ciri khas karena sejumlah kecil bahan yang unik. Kita tidak dapat menonjolkan bahan-bahan ini hanya dengan melihat bahan paling populer, karena biasanya itu adalah bahan dasar memasak seperti garam atau gula.

Metrik lain yang dapat membantu adalah term frequency–inverse document frequency (TFIDF), sebuah statistik numerik yang dirancang untuk mencerminkan seberapa penting sebuah kata (bahan) bagi sebuah dokumen (jenis kuliner) dalam sebuah koleksi atau korpus (resep).

Kami telah lebih dulu menghitung tf_idf untuk Anda dan membuat himpunan data yang diperkaya bernama recipes_enriched. Tujuan Anda adalah membuat aplikasi Shiny yang menampilkan diagram batang horizontal berisi bahan-bahan paling khas dalam suatu kuliner, diukur menggunakan tf_idf.

An app displaying an interactive horizontal bar plot of top ingredients by chosen cuisine

Anda akan menggunakan ekspresi reaktif untuk merangkum perhitungan sehingga kode plotting hanya berfokus pada pembuatan plot. Ini adalah praktik pemrograman yang baik dan membantu membuat aplikasi Shiny yang modular dan berkinerja baik.

Kami telah memuat paket shiny, dplyr, ggplot2, dan plotly. Berikut dua cuplikan berguna untuk memfilter bahan teratas berdasarkan jenis kuliner dan membuat diagram batang horizontal. Anda dapat menyesuaikannya sesuai kebutuhan.

top_ingredients <- recipes_enriched %>% 
  filter(cuisine == 'greek') %>% 
  arrange(desc(tf_idf)) %>% 
  head(5) 

ggplot(top_ingredients, aes(x = ingredient, y = tf_idf)) +
  geom_col() +
  coord_flip()

Latihan ini adalah bagian dari kursus

Membangun Aplikasi Web dengan Shiny di R

Lihat Kursus

Petunjuk latihan

  • UI:

    • Tambahkan keluaran plotly interaktif bernama plot_top_ingredients dan bungkus di dalam tabPanel() dengan label yang sesuai.
  • Server:

    • Tambahkan ekspresi reaktif bernama rval_top_ingredients yang memfilter recipes_enriched untuk kuliner yang dipilih dan bahan-bahan paling khas berdasarkan nilai tf_idf.
    • Render diagram batang interaktif dari bahan-bahan teratas beserta tf_idf-nya dan tetapkan ke keluaran bernama plot_top_ingredients. Sebagai tantangan tambahan untuk Anda sendiri, coba atur agar batang ditampilkan dalam urutan menurun berdasarkan tf_idf.

Latihan interaktif praktis

Cobalah latihan ini dengan menyelesaikan kode contoh berikut.

ui <- fluidPage(
  titlePanel('Explore Cuisines'),
  sidebarLayout(
    sidebarPanel(
      selectInput('cuisine', 'Select Cuisine', unique(recipes$cuisine)),
      sliderInput('nb_ingredients', 'Select No. of Ingredients', 1, 100, 10),
    ),
    mainPanel(
      tabsetPanel(
        # CODE BELOW: Add a plotly output named "plot_top_ingredients"
        
        tabPanel('Table', DT::DTOutput('dt_top_ingredients'))
      )
    )
  )
)

server <- function(input, output, session) {
  # CODE BELOW: Add a reactive expression named `rval_top_ingredients` that
  # filters `recipes_enriched` for the selected cuisine and top ingredients
  # based on the tf_idf value.

  
  
  
  
  
  
  # CODE BELOW: Render a horizontal bar plot of top ingredients and 
  # the tf_idf of recipes they get used in, and assign it to an output named 
  # `plot_top_ingredients` 
  
  
  
  
  
  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, server)
Edit dan Jalankan Kode