I got a visualisation problem and I can't get my head around. From some data with position information included I want to create a map. I found the great choroplethr
package which was a great starting point and it really helped me a lot to understand how to process data for meaningful results. Here is the map the way I would like to have it:
But when I try to replicate the steps (cf. self$render
of the chlorplethr
package using ggplot2
) I get the following result:
Does anyone have an idea where my parameters are wrong/lacking something? Here is the code:
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")
Edit: I think, I found the problem. If I just plot the map for one region
merge.shp %>% filter(plz %in% c("645"))
%>% ggplot(aes(x=long, y=lat, group=group)) geom_path
I get the following result:
So everything may be related to the "wrong" connection of coordinates. If I replace geom_path
with geom_point
there are some reasonable outlines. But how do I translate this to the map?
CodePudding user response:
The solution is actually quite simple. The order is essential for geom_polygon
and I was mistakenly assuming my dataframe merge.shp
was in an ascending order for all factors, which it wasn't. Introducing
merge.shp = merge.shp[order(merge.shp$order), ]
made it work.