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.

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ırEgzersiz talimatları
- UI:
wc_ingredientsadlı bird3wordcloudOutput()ekle ve bunu birtabPanel()içinde sarmala. Bu, uygulamandaki ilktabPanel()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_ingredientsadına ata. Tarif sayılarıyla birlikte en üst malzemeleri içeren bir veri çerçevesi döndürmek içinrval_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)