2014-06-17 2 views
5

Ramnath Vaidyanathan의 훌륭한 데모를 http://rmaps.github.io/blog/posts/leaflet-heat-maps/index.html에 사용하고 있습니다. 내 반짝이는 응용 프로그램의 히트 맵을 재현하고 싶습니다.r 차트에서 리플 렛 열전도 만들기 rCharts를 사용하여 반짝임

Ramnath의 코드를 반짝이는 데 사용하려 할 때지도를 얻는 데 그쳤지만 히트 맵은 나오지 않았습니다. 아마도 내 문제의 이유 중 일부는 Ramnath의 원본 코드가 rMaps를 사용하는 반면 rCharts (Ramnath도 개발 됨)가 더 많이 개발 되었기 때문에/shiny와 잘 통합되어 있고 물론 Leaflet이 포함되어 있기 때문입니다. 반짝이는 HTML 일반 명령 renderUIhtmlOutput을 사용하여 rMaps를 사용하려고 시도했지만 성공하지 못했습니다.

이 작동하지 않습니다 반짝 코드는 (그냥 핫스팟 라이브러리를 무시지도 표시) : 대답에

library(rCharts) 
library(shiny) 

runApp(
list(ui = (pageWithSidebar(
headerPanel("Heatmap"), 
sidebarPanel(width=2), 
mainPanel(
mapOutput("leafmap") 
) 
)), 
server = function(input, output) { 
output$leafmap <- renderMap({ 
L2 <- Leaflet$new() 
L2$setView(c(29.7632836, -95.3632715), 10) 
L2$tileLayer(provider = "MapQuestOpen.OSM") 
data(crime, package = 'ggmap') 
library(plyr) 
crime_dat = ddply(crime, .(lat, lon), summarise, count = length(address)) 
crime_dat = toJSONArray2(na.omit(crime_dat), json = F, names = F) 
L2$addAssets(jshead = c(
"http://leaflet.github.io/Leaflet.heat/dist/leaflet-heat.js" 
)) 
L2$setTemplate(afterScript = sprintf(" 
           <script> 
           var addressPoints = %s 
           var heat = L.heatLayer(addressPoints).addTo(map)   
           </script> 
           ", rjson::toJSON(crime_dat) 
)) 

L2 
}) 
} 
)) 
+0

[히트 맵 in shiny r 차트] (http://stackoverflow.com/q/33193546/4002530) 솔루션을 가지고 – tospig

답변

4

내 댓글을 터닝 (making use of this question/answer)

library(rCharts) 
library(shiny) 
library(data.table) 

runApp(
    list(ui = (pageWithSidebar(
    headerPanel("Heatmap"), 
    sidebarPanel(width=2), 
    mainPanel(
     chartOutput("baseMap", "leaflet"), 
     tags$style('.leaflet {height: 500px;}'), 
    tags$head(tags$script(src="http://leaflet.github.io/Leaflet.heat/dist/leaflet-heat.js")), 
     uiOutput('heatMap') 
    ) 
)), 
    server = function(input, output) { 

    data(crime, package="ggmap") 
    crime <- as.data.table(crime) 

    output$baseMap <- renderMap({ 
     baseMap <- Leaflet$new() 
     baseMap$setView(c(29.7632836, -95.3632715), 10) 
     baseMap$tileLayer(provider = "MapQuestOpen.OSM") 
     baseMap 
    }) 

    output$heatMap <- renderUI({ 

     ## changed to use data.table for speed 
     crime_dat <- crime[(lat != ""), .(count = .N), by=.(lat, lon)] 
      ## there's a blank in there somewhere 

     ## I was having issues with toJSON, so I'm creating my own JSON 
     j <- paste0("[",crime_dat[,lat], ",", crime_dat[,lon], ",", crime_dat[,count], "]", collapse=",") 
     j <- paste0("[",j,"]") 

     tags$body(tags$script(HTML(sprintf(" 
         var addressPoints = %s 
         var heat = L.heatLayer(addressPoints).addTo(map)" 
             , j 
    )))) 

    }) 
    } 
)) 

그리고 그것을 보여주기 위해

enter image description here

+0

내가 파란색, 주황색 또는 빨간색 될 때 어딘가에 규모를 넣을 수 있습니까? –