[英]Creating a shape file: ggplot2
我正在尝试创建自己的准shapefile并将其提供给ggplot2。 我是使用maps包中的预制地图数据完成此操作的。 我无法创建绘制所有图块的shapefile。
我希望绘制所有id区域,但看来我犯了一个错误,但我不知道如何或在哪里。 这是缺少1至8的当前图。
如何获得这些缺失的部分进行绘制。 数据如下:
space.manikin.shape <- structure(list(x = c(0.4, 0.4, 0.6, 0.6, 0.35, 0.4, 0.6, 0.65,
0.6, 0.65, 0.65, 0.6, 0.4, 0.35, 0.65, 0.6, 0.35, 0.35, 0.4,
0.4, 0.4, 0.4, 0.6, 0.6, 0.6, 0.6, 0.65, 0.65, 0.73, 0.73, 0.65,
0.65, 0.73, 0.73, 0.6, 0.6, 0.73, 0.73, 0.65, 0.65, 0.4, 0.4,
0.6, 0.6, 0.27, 0.27, 0.4, 0.4, 0.35, 0.35, 0.27, 0.27, 0.35,
0.35, 0.27, 0.27, 0.35, 0.35, 0.4, 0.4, 0.35, 0.35, 0.65, 0.65,
0.65, 0.65, 0.73, 0.73, 1, 1, 0.73, 0.73, 1, 1, 0.65, 0.65, 1,
1, 0.73, 0.73, 0.35, 0.35, 0.65, 0.65, 0, 0, 0.35, 0.35, 0.27,
0.27, 0, 0, 0.27, 0.27, 0, 0, 0.27, 0.27, 0.35, 0.35), y = c(0.67,
0.525, 0.525, 0.67, 0.75, 0.67, 0.67, 0.75, 0.525, 0.475, 0.75,
0.67, 0.525, 0.475, 0.475, 0.525, 0.75, 0.475, 0.525, 0.67, 0.87,
0.75, 0.75, 0.87, 0.87, 0.75, 0.75, 0.67, 0.67, 0.87, 0.67, 0.525,
0.525, 0.67, 0.475, 0.28, 0.28, 0.525, 0.525, 0.475, 0.475, 0.28,
0.28, 0.475, 0.525, 0.28, 0.28, 0.475, 0.475, 0.525, 0.67, 0.525,
0.525, 0.67, 0.87, 0.67, 0.67, 0.75, 0.75, 0.87, 1, 0.87, 0.87,
1, 1, 0.87, 0.87, 0.75, 0.75, 1, 0.75, 0.475, 0.475, 0.75, 0.28,
0, 0, 0.475, 0.475, 0.28, 0.28, 0, 0, 0.28, 0.475, 0, 0, 0.28,
0.28, 0.475, 0.75, 0.475, 0.475, 0.75, 1, 0.75, 0.75, 0.87, 0.87,
1), id = structure(c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 3L, 3L,
3L, 3L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 6L, 6L, 6L, 6L, 7L, 7L,
7L, 7L, 7L, 7L, 8L, 8L, 8L, 8L, 9L, 9L, 9L, 9L, 9L, 9L, 10L,
10L, 10L, 10L, 11L, 11L, 11L, 11L, 11L, 11L, 12L, 12L, 12L, 12L,
13L, 13L, 13L, 13L, 13L, 13L, 14L, 14L, 14L, 14L, 15L, 15L, 15L,
15L, 15L, 15L, 16L, 16L, 16L, 16L, 17L, 17L, 17L, 17L, 17L, 17L,
18L, 18L, 18L, 18L, 19L, 19L, 19L, 19L, 19L, 19L, 20L, 20L, 20L,
20L, 21L, 21L, 21L, 21L, 21L, 21L), .Label = c("01", "02", "03",
"04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14",
"15", "16", "17", "18", "19", "20", "21"), class = "factor"),
order = c(1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L,
1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L,
4L, 5L, 6L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 5L, 6L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 5L, 6L, 1L, 2L, 3L, 4L, 1L, 2L, 3L,
4L, 5L, 6L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 5L, 6L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 5L, 6L, 1L, 2L, 3L, 4L, 1L, 2L, 3L,
4L, 5L, 6L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 5L, 6L)), .Names = c("x",
"y", "id", "order"), class = "data.frame", row.names = c(NA,
-100L))
centers <- data.frame(
id = 1:21,
center.x=c(.5, .5, .625, .5, .375, .5, .66, .69, .66, .5, .34, .31,
.34, .5, .79, .815, .79, .5, .16, .135, .16),
center.y=c(.597, .71, .5975, .5, .5975, .82, .81, .6475, .39, .3775, .39,
.6475, .81, .935, .89, .6025, .19, .14, .19, .6025, .89)
)
library(ggplot2)
library(grid)
library(png)
ggplot(centers) + geom_map(aes(map_id = id), map = space.manikin.shape, colour="white") +
expand_limits(space.manikin.shape) +
geom_text(data=centers, aes(center.x, center.y, label = id), color="grey60")
我不知道list_df2df
做什么或在什么包中。
如果我用用我自己的解释polygon
,多边形看起来是正确的。 另外,由于您缺少多边形1:9,因此我怀疑多边形和中心ID的匹配出现问题。 多边形被命名为01
, 02
等,而中心IDS被命名为1
, 2
等。或许这会导致你的问题。
polygon
示例:
plot(0:1,0:1,type='n', ann=F, axes=T)
for (i in 1:length(dat)){
polygon(x=dat[[i]]$x, y=dat[[i]]$y, col=2)
text(x=centers[i,'center.x'], y=centers[i,'center.y'], labels=i)
}
# ... nothing wrong with polygon or center coordinates
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.