chloroplethr 包和 ggplot2 之间的不同渲染

Different rendering between chloroplethr package and ggplot2

我遇到了可视化问题,无法理解。我想根据一些包含位置信息的数据来创建地图。我找到了很棒的 choroplethr 包,这是一个很好的起点,它确实帮助我理解了如何处理数据以获得有意义的结果。这是我想要的地图:

但是当我尝试复制这些步骤时(参见 chlorplethr 包的 self$render 使用 ggplot2)我得到以下结果:

有谁知道我的参数在哪里 wrong/lacking?这是代码:

fig <- ggplot(data=merge.shp, aes(x = long, y = lat, group = group)) +
    geom_polygon(aes(fill = sqm_cat), na.rm=FALSE, rule="evenodd", position="identity") +
    coord_equal() +
    scale_fill_brewer("", drop = FALSE, na.value = "black") + 
    ggplot2::theme_void() +
    ggtitle("People per square kilometers")

编辑:我想,我找到了问题所在。如果我只绘制一个区域的地图

merge.shp %>% filter(plz %in% c("645")) 
        %>% ggplot(aes(x=long, y=lat, group=group)) + geom_path

我得到以下结果:

所以一切都可能与坐标“错误”连接有关。如果我将 geom_path 替换为 geom_point ,则有一些合理的轮廓。但是如何将其转换为地图?

解决方法其实很简单。该顺序对于 geom_polygon 是必不可少的,我错误地假设我的数据框 merge.shp 对于所有因素都是按升序排列的,但事实并非如此。介绍

merge.shp = merge.shp[order(merge.shp$order), ]

成功了。