首页 > 解决方案 > 美国各州 shapefile 的 R geom_point vs geom_line vs geom_path

问题描述

[带有 geom_path 的美国州][1][带有 geom_point 的美国州][2]我正在使用 R 将美国州的形状文件覆盖在 ogallala 区域形状文件之上。理想情况下,我希望将形状边界作为线,但是当我尝试(在图片中)时,我得到的地图形状很差,但是当我尝试 geom_point 时它工作正常。有人可以解释我做错了什么。[美国有 geom_line 的州][3]


OG_HUC = read.csv("input/Ogallala_huc.csv")
OG_table =right_join(HUC8_map.df,OG_HUC,by = c("HUC_CODE"="HUC8"))
#OG_table = merge(HUC8_map.df,OG_HUC,by = "HUC8", sort = FALSE)
OG_table[is.na(OG_table)] = 0
#write.csv(OG_table,'OG_table.csv')


State <- readOGR( 
  dsn= paste0(getwd(),"/input/State") , 
  layer="states"
)
State_map <- spTransform(State, CRS("+proj=longlat +datum=WGS84"))
State_map@data$id = rownames(State_map@data)
State_map.points = fortify(State_map, region="id")

centroids.df <- as.data.frame(coordinates(State_map))
names(centroids.df) <- c("Longitude", "Latitude")  #more sensible column names

State_map.df1 = merge(State_map.points, State_map@data, by="id")
State_map.df2 = data.frame(id = State_map@data$id, State_map@data, centroids.df)




ggplot()+geom_polygon(data=OG_table,aes(x = long, y = lat, group=group),fill="lightskyblue",col="black", alpha = 0.3) +
  geom_text(data = State_map.df2, aes(Longitude, Latitude, label=STATE_ABBR),col="black")+
  #geom_path(data = OG_table, aes(long, lat, group=group),color="black") +
  geom_point(data = State_map.df1, aes(long, lat, label=STATE_ABBR),color="black")+
  coord_map(xlim = c(-108,-95),ylim = c(31,45))+
  scale_fill_identity()
```enter image description here 


  [1]: https://i.stack.imgur.com/7XzeB.png
  [2]: https://i.stack.imgur.com/9tAB8.png
  [3]: https://i.stack.imgur.com/MtgXs.png

标签: rggplot2stateboundary

解决方案


尝试:

Library (maps) 

Your_data %>% ggplot (aes(lat, lon)) + 
                    Borders ("states") +
                    geom_polygon() 

推荐阅读