繁体   English   中英

创建形状文件:ggplot2

[英]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的匹配出现问题。 多边形被命名为0102等,而中心IDS被命名为12等。或许这会导致你的问题。

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM