2014-06-17 30 views
5

Ramnath Vaidyanathan tarafından http://rmaps.github.io/blog/posts/leaflet-heat-maps/index.html adresindeki büyük demoyu kullanıyorum ve parlak haritanım için ısı haritasını yeniden oluşturmak istiyorum.rCharts kullanarak r ve parlak kitapçık ısı eşlemeleri oluşturma

Ramnath'ın kodunu parlak bir şekilde kullanmaya çalıştığımda, yalnızca haritayı çıkarmayı başarabilirim, ancak ısı haritasını değil. Sorunlarımın bir nedeni de, Ramnath'ın orijinal kodunun, daha gelişmiş/daha parlak ve daha iyi entegre edilmiş olması ve ayrıca Broşürün de yer aldığı rCharts (Ramnath tarafından da geliştirilmiştir) kullanırken rMaps kullanmasıdır. RMaps'i parlak HTML'in genel jenerik komutları renderUI ve htmlOutput ile hiç başarıya ulaşmaya çalıştım.

Bu işe yaramazsa parlak kodudur (sadece sıcak nokta kütüphane görmezden harita görüntüler): bir cevap haline

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

[Isı haritası çalışan göstermek Grafikler] (http://stackoverflow.com/q/33193546/4002530) – tospig

cevap

4

yorumumu Torna (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 
    )))) 

    }) 
    } 
)) 

Ve r ile parlak içinde

enter image description here

+0

bir çözüm var mavi, turuncu veya kırmızı olmak için bir yere bir yere koyabilir miyim? –