我希望使用map()
包提供纬度和经度(使用Google地图的API计算),在使用ggplot2
创建的法国地图上绘制一些点。
点数示例:
centerid latitude longitude
1 0121H1 46.22368 5.210819
2 0121H2 46.22368 5.210819
3 0218H3 49.37008 3.335127
4 0303H1 46.34272 2.608380
5 0303H2 46.34272 2.608380
这一行:
carte_france <- map("france")
我明白了:
但是当我正在运行这些行(尤其是第二行)时:
head(fortify(carte_france))
ggplot(carte_france, aes(long, lat)) +
geom_polygon(aes(group = group))
我明白了:
地图很好看但我想保持部门之间的界限。可能吗?或者我应该使用其他东西? DATAS:
structure(list(centerid = structure(1:5, .Label = c("0121H1",
"0121H2", "0218H3", "0303H1", "0303H2", "0303H5", "0620H1", "0620H2",
"0620H6", "0807A1", "0807H1", "0807H2", "1007H1", "1320H4", "1415A1",
"1415H6", "1719H3", "1719H31", "1719H7", "1806H5", "1806H6",
"1911H1", "2104H1", "2104H5", "2205A1", "2205H1", "2205H2", "2205H3",
"2205H4", "2205H6", "2205H7", "2311H2", "2311H3", "2509H1", "2509H4",
"2621C1", "2621H4", "2716H1", "2716H2", "2716H3", "2806H1", "2806H5",
"2905H1", "2905H2", "2905H3", "2905H4", "2905H5", "2905H7", "3010H1",
"3113C1", "3113H3", "3113H4", "3113H47", "3113H5", "3113H6",
"3113L1", "3113L2", "3213A3", "3213H1", "3213H2", "3410C1", "3410H10",
"3410H11", "3410H2", "3410H3", "3410H4", "3410H7", "3505C1",
"3505H3", "3505H4", "3505H5", "3505H6", "3505L4", "3505P55",
"3706H58", "3821C1", "3821H1", "3821H3", "3821H4", "3909H1",
"4002H1", "4002H2", "4002H65", "4106A1", "4106H1", "4106H2",
"4221C1", "4221H1", "4221H2", "4221H3", "4221H5", "4221H7", "4417C2",
"4417H2", "4417H68", "4417L1", "4613A1", "4702H1", "4702H71",
"4917C1", "4917H1", "4917H2", "4917H72", "4917L2", "5015H1",
"5015H73", "5107P1", "5207H1", "5207H2", "5207H79", "5317H1",
"5317H2", "5412H1", "5412H4", "5412H87", "5512H2", "5605H2",
"5605H4", "5605H89", "5712H2", "5914A4", "5914H2", "5914H4",
"5914H8", "5914H9", "5914H95", "5914H96", "6115H1", "6214A4",
"6214D5", "6214H2", "6214H4", "6303H1", "6303H2", "6402H113",
"6610H116", "6701A1", "6701H1", "6701H2", "6701H6", "6701H8",
"6801H1", "6801H3", "6801H4", "6921A1", "6921H1", "6921H2", "6921H5",
"7009H1", "7009H131", "7104H1", "7104H133", "7104H3", "7104H4",
"7421H2", "7522A5", "7522H015", "7522H1", "7522H13", "7522H142",
"7522H149", "7522H15", "7522H157", "7522H16", "7522H162", "7522H2",
"7522H21", "7522H4", "7522H83", "7522H9", "7616A1", "7616H2",
"7616H4", "7722H174", "7722H2", "7822H1", "7919H1", "8018H3",
"8113H1", "8113H187", "8113H2", "8213H1", "8213H2", "8320A191",
"8320D3", "8320H1", "8320H193", "8320H4", "8320H5", "8420H1",
"8711H1", "8812A1", "8812H1", "8812H3", "8812H7", "8904H2", "8904L2",
"9009H2", "9122H1", "9222A1", "9222A3", "9222H1", "9222H11",
"9222H2", "9222H4", "9222H5", "9222H7", "9222H8", "9222H9", "9322A1",
"9322D2", "9322H2", "9322H222", "9322H3", "9322H6", "9322H7",
"9422D1", "9422H1", "9422H2", "9422H3", "9422H5", "9522H1", "9522H4",
"9522H5", "9522H6", "9522H7", "9723H15", "9723H2", "9723H8"), class = "factor"),
latitude = c(46.2236804, 46.2236804, 49.3700842, 46.3427222,
46.3427222), longitude = c(5.2108193, 5.2108193, 3.335127,
2.6083801, 2.6083801)), .Names = c("centerid", "latitude",
"longitude"), class = "data.frame", row.names = c("1", "2", "3",
"4", "5"))
答案 0 :(得分:1)
这样的东西?您的多边形已填满,您需要一个分组来绘制单独的多边形。
ggplot(map('france'), aes(long, lat, group = group)) +
geom_polygon(fill = NA, col = 1) +
coord_quickmap()
并包括这些要点:
ggplot(map('france'), aes(long, lat)) +
geom_polygon(aes(group = group), fill = NA, col = 1) +
coord_quickmap() +
geom_point(aes(longitude, latitude), data = my_points, col = 'red')
间隙是我猜测的形状文件的属性,但您可以通过绘制较粗的线来至少减少问题。
ggplot(map('france'), aes(long, lat)) +
geom_polygon(aes(group = group), fill = NA, col = 'grey30', size = 1) +
coord_quickmap() +
geom_point(aes(longitude, latitude), data = my_points, col = 'red', size = 2)
答案 1 :(得分:0)
在你的第一步 carte_france&lt; - map(&#34; france&#34;) 您将地图视为简单的线而不是多边形。因此,运行默认的细线,并且此算法不对称。由于两个相邻的多边形共享一条在两个不同方向上变薄的公共线,因此可以获得这样的间隙。
有几种简单的方法可以关闭细化:
在这种情况下,这三个选项中的任何一个都会产生干净的多边形。