2015-08-20 4 views
0

Я использую карты карт rCharts для отображения многоугольников на карте на R. Используя геологический листок, я создал несколько полигонов и добавил их к карте. Однако эти полигоны заполняются голубым цветом по умолчанию. Я пытаюсь дать им другой цвет, но без успеха. Например, я использовал следующий JSON, протестировал его в geojson.io, и он стал зеленым, однако пакет R по-прежнему отображает его в синем цвете, как я могу обеспечить соблюдение цвета?rCharts GeoJSON - Изменить цвет заливки полигонов

JSON:

{ 
    "type": "FeatureCollection", 
    "features": [ 
    { 
     "type": "Feature", 
     "properties": { 
     "stroke": "#555555", 
     "stroke-width": 2, 
     "stroke-opacity": 1, 
     "fill": "#00f900", 
     "fill-opacity": 0.5 
     }, 
     "geometry": { 
     "type": "Polygon", 
     "coordinates": [ 
      [ 
      [ 
       -74.06982421875, 
       40.64730356252251 
      ], 
      [ 
       -74.06982421875, 
       40.79717741518769 
      ], 
      [ 
       -73.80615234375, 
       40.79717741518769 
      ], 
      [ 
       -73.80615234375, 
       40.64730356252251 
      ], 
      [ 
       -74.06982421875, 
       40.64730356252251 
      ] 
      ] 
     ] 
     } 
    } 
    ] 
} 

R:

jsonx <- (JSON above) 
polys = RJSONIO::fromJSON(jsonX)  
map.center <- c(38,-95) 
myMap<-Leaflet$new() 
myMap$setView(map.center, 4) 
myMap$tileLayer(provider = "Esri.WorldGrayCanvas") 
myMap$geoJson(polys) 
myMap$set(dom = 'myChart2') 
myMap 

ответ

1

Хотя rCharts реализация была хорошая, leaflet пакет RStudio, основанный на htmlwidgets гораздо более полнофункциональная и надежная. Если вы можете использовать его вместо этого, вот ответ. Обратите внимание: ничего не нужно делать. leaflet возьмет fill в вашем geoJSON.

# uncomment to install the most recent from github 
# devtools::install_github("rstudio/leaflet") 
# or older cran #install.packages("leaflet") 
library(leaflet) 

gj <- ' 
{ 
    "type": "FeatureCollection", 
    "features": [ 
    { 
    "type": "Feature", 
    "properties": { 
    "stroke": "#555555", 
    "stroke-width": 2, 
    "stroke-opacity": 1, 
    "fill": "#00f900", 
    "fill-opacity": 0.5 
    }, 
    "geometry": { 
    "type": "Polygon", 
    "coordinates": [ 
    [ 
    [ 
    -74.06982421875, 
    40.64730356252251 
    ], 
    [ 
    -74.06982421875, 
    40.79717741518769 
    ], 
    [ 
    -73.80615234375, 
    40.79717741518769 
    ], 
    [ 
    -73.80615234375, 
    40.64730356252251 
    ], 
    [ 
    -74.06982421875, 
    40.64730356252251 
    ] 
    ] 
    ] 
    } 
    } 
    ] 
    } 
' 

leaflet() %>% 
    addTiles() %>% 
    setView(-74.1, 40.7, zoom = 10) %>% 
    addGeoJSON(gj) 


# to show fill works let's change it with gsub 

leaflet() %>% 
    addTiles() %>% 
    setView(-74.1, 40.7, zoom = 10) %>% 
    addGeoJSON(
    gsub(
     x = gj 
     ,pattern = '(\\"fill\": \\"#00f900\\",)' 
     ,replacement = "" 
    ) 
    # demo addGeoJSON fillColor argument 
    ,fillColor = 'green' 
) 
Смежные вопросы