始める無料で始める

Mass shootings: 出力を変更する

この演習では、前に作成した Shiny アプリを拡張し、死亡者数に応じた大きさの赤い円をインタラクティブマップに表示し、円をクリックすると事件の概要が表示されるようにします。アプリは次のスクリーンショットのようになります。

An app displaying red circles for each mass shooting incident with details appearing on clicking the circle

この演習はコースの一部です

Rで作るShiny Webアプリケーション

コースを見る

演習の手順

  • リアクティブ式 rval_mass_shootings を更新し、ユーザーが選択した死亡者数(nb_fatalities)と日付範囲(date_range)に基づいてデータセットを フィルタリングしてください。
  • addCircleMarkers() 内のコードを更新し、円の radiusfatalities に、popup パラメータを summary にマッピングしてください。 パラメータ p をフィールド f にマッピングするには p = ~ f のように指定できます。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

ui <- bootstrapPage(
  theme = shinythemes::shinytheme('simplex'),
  leaflet::leafletOutput('map', height = '100%', width = '100%'),
  absolutePanel(top = 10, right = 10, id = 'controls',
    sliderInput('nb_fatalities', 'Minimum Fatalities', 1, 40, 10),
    dateRangeInput('date_range', 'Select Date', "2010-01-01", "2019-12-01")
  ),
  tags$style(type = "text/css", "
    html, body {width:100%;height:100%}     
    #controls{background-color:white;padding:20px;}
  ")
)

server <- function(input, output, session) {
  rval_mass_shootings <- reactive({
    # MODIFY CODE BELOW: Filter mass_shootings on nb_fatalities and 
    # selected date_range.
    mass_shootings

      
      
      
      
  })
  output$map <- leaflet::renderLeaflet({
    rval_mass_shootings() %>%
      leaflet() %>% 
      addTiles() %>%
      setView( -98.58, 39.82, zoom = 5) %>% 
      addTiles() %>% 
      addCircleMarkers(
        # CODE BELOW: Add parameters popup and radius and map them
        # to the summary and fatalities columns

        fillColor = 'red', color = 'red', weight = 1
      )
  })
}

shinyApp(ui, server)
コードを編集して実行