代码之家  ›  专栏  ›  技术社区  ›  Anakin Skywalker

从R中的小叶图中删除灰色/灰色阴影

  •  0
  • Anakin Skywalker  · 技术社区  · 6 年前

    伙计们,我有个问题。我的地图有一个不寻常的灰色阴影。 我用形状文件

    countries <- readOGR(".","ne_50m_admin_0_countries")
    

    或geojson

    url <- "https://raw.githubusercontent.com/datasets/geo-countries/master/data/countries.geojson"
    countries <- geojson_read(url, what = "sp")
    

    没关系,两者都有相同的错误。

    enter image description here

    我以前有过这个问题,但没有找到一个可持续的解决方案,我的搜索也没有帮助,这就是我来这里的原因。

    我该怎么上色?

    # Color palette
    colorFactors = colorFactor(c('red', 'orange', 'blue', 'green'),
                          domain = dfs_pg$Region)
    
    # Create a map
    leaflet(dfs_pg) %>%
    addProviderTiles(providers$OpenStreetMap) %>%
    addPolygons(stroke = FALSE, 
              fillOpacity = 0.75, 
              color = colorFactors(dfs_pg$Region), weight = 1)
    

    有多个NAs,我试图忽略它们-对我不起作用。我想让NAs保持与原始提供商相同的颜色,没有这个阴影。

    我将csv和geojson合并到一个空间数据框架中。

    同样的问题也适用于任何提供者。

    非常感谢你的帮助! 谢谢!

    1 回复  |  直到 6 年前
        1
  •  0
  •   Anakin Skywalker    6 年前

    在R社区的帮助下完全解决了这个问题。在此处输入图像描述

    治疗NAs是关键:

    “如果您查看data_pg_df$Region,您会发现它有许多NAs:

    > data_pg_df$Region
    [1] NA              NA              NA              NA              NA             
    [6] NA              NA              NA              "Latin America" NA             
    [11] NA              NA              NA              NA              NA             
    [16] NA              NA              NA              NA              NA             
    [21] NA              NA              NA              NA              NA             
    [26] NA              NA              NA              NA              NA             
    [31] NA              NA              NA              NA              NA             
    [36] NA              NA              NA              "North America" NA             
    [41] NA              "Asia"          NA              NA              NA             
    [46] NA              NA              NA              NA              NA             
    [51] NA              NA              NA              NA              NA             
    [56] NA              NA              "Europe"        NA              NA             
    [61] NA              NA              NA              NA              NA          
    ...   
    

    对于data_pg_df$Region==input$regionInput,您将其与一个值进行比较,如 “亚洲”。在R中,如果将一个值与NA进行比较,就会得到NA。

    > data_pg_df$Region == "Asia"
    [1]    NA    NA    NA    NA    NA    NA    NA    NA FALSE    NA    NA    NA    NA    
    NA    NA
    [16]    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    
    NA    NA
    [31]    NA    NA    NA    NA    NA    NA    NA    NA FALSE    NA    NA  TRUE    NA    
    NA    NA
    [46]    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA FALSE    
    NA    NA
    [61]    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    
    NA    NA
    ...
    

    而且不能使用NA索引到data_pg_df对象。

    你需要处理好NAs。我不知道什么适合您的数据集,但看起来您可能只希望保留==解析为TRUE的行,并删除将导致NA和FALSE的行。为此,您可以添加一个带有is.na()的支票:

    !is.na(data_pg_df$Region) & data_pg_df$Region == "Asia"
    [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE 
    FALSE FALSE
    [16] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE 
    FALSE FALSE
    [31] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE 
    FALSE FALSE
    [46] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE 
    FALSE FALSE
    [61] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE 
    FALSE FALSE
    

    ... 那么你就会:

    selectedRegion <- reactive({
    data_pg_df[!is.na(data_pg_df$Region) & data_pg_df$Region == input$regionInput, ]
    })"
    

    enter image description here