2017-03-31 6 views
5

をラベルテキストを配置する次のデータフレームがあるとします。R及びリーフレット:どのように複数行に渡って

cities = data.frame(name = c('Madrid','Barcelona','Sevilla'), 
       country = c('Spain','Spain','Spain'), 
       region = c('Comunidad de Madrid','Cataluña','Andalucia'), 
       data = c(100, 200, 300), 
       lng = c(-3.683333,2.166667,-6.083333), 
       lat = c(40.433333,41.383333,37.446667)) 

私の考えは、ホバリング時にいくつかの関連情報を表示することができ、これらの都市とラベルのマップを持つことです対応する都市のサークル。私はラベルのテキストをいくつかの行に並べるようにしたいと思います。以下の非常に最初のアプローチは失敗しました:

library(leaflet) 

map = leaflet(cities) %>% 
addTiles() %>% 
addCircles(lng = ~lng, lat = ~lat, fillColor = 'darkBlue', radius = 10000, 
      stroke = FALSE, fillOpacity = 0.8, label = paste0(cities$name,'\n', cities$region, '\n', cities$country, '\n', cities$data)) 

ならびに他の同様の試み。しばらくグーグルた後、私はhtmltoolsパッケージ巻き込んでの可能な解決策を見つけた:この場合

library(htmltools) 
map2 = leaflet(cities) %>% 
addTiles() %>% 
addCircles(lng = ~lng, lat = ~lat, fillColor = 'darkBlue', radius = 10000, 
      stroke = FALSE, fillOpacity = 0.8, 
      label = HTML(paste0('<p>', cities$name, '<p></p>', cities$region, ', ', cities$country,'</p><p>', cities$data, '</p>'))) 

を私が好きな、情報が表示されますが、同じラベルの中に、のためのエントリがありますデータセットの各都市。 1つの都市のテキストを複数の行に並べるにはどうすればよいですか?すべてのヘルプは本当に

答えて

7

まず、​​

labs <- lapply(seq(nrow(cities)), function(i) { 
    paste0('<p>', cities[i, "name"], '<p></p>', 
      cities[i, "region"], ', ', 
      cities[i, "country"],'</p><p>', 
      cities[i, "data"], '</p>') 
}) 

map2 = leaflet(cities) %>% 
    addTiles() %>% 
    addCircles(lng = ~lng, lat = ~lat, fillColor = 'darkBlue', radius = 10000, 
       stroke = FALSE, fillOpacity = 0.8, 
       label = lapply(labs, HTML)) 

map2 
label属性を定義するとき lapplyコールに正しい表示のための HTML属性を設定することをラップし、各都市のHTMLコンテンツの文字ベクトルを作成していただければ幸い
+0

これはまさに私が探していたもので、とてもシンプルで明白なので、自分で自分の心に来たはずです。最後の ')'はあなたのコードに少しだけ調整する必要はありません。ありがとう。 – LuPi

+0

ブラケットのヒントありがとう...コピー&ペーストエラー – TimSalabim

関連する問題