Объединить графства в географических данных - PullRequest
3 голосов
/ 20 декабря 2011

Я хотел бы представить несколько округов в штате TN как один регион с использованием общей цветовой заливки.Я могу сделать это с помощью кода ниже:

library(maps)
map("state", "tennessee", fill = TRUE, col="white", names = TRUE, plot = TRUE)
co <- map("county",region = c("tennessee,williamson","tennessee,davidson",
                         "tennessee,wilson","tennessee,cheatham"),
       col = "red", bg = "blue", fill = TRUE, plot = FALSE)
polygon(co$x, co$y, col = "yellow", border = "black")

Но черные области нарисованы внутри моей области интересов.Есть ли способ определить функцию многоугольника так, чтобы общие границы округа не отображались черным цветом?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 20 декабря 2011

Возможно, вы захотите прочитать R Spatial Task View, а также использовать package: maptools для чтения и построения шейп-файлов.Затем вы можете использовать package: rgeos, чтобы расторгнуть границы шейп-файла округа, или получить шейп-файл округа и штата и построить их отдельно.

Старый пакет 'maps' немного ограничен.

2 голосов
/ 20 декабря 2011
  • Чтобы получить внешнюю границу всей рентабельности инвестиций, вам нужно позвонить на map.poly() с помощью as.polygon=FALSE, а затем построить график с помощью lines().
  • Чтобы получить сплошную внутреннюю заливку, вам нужно позвонить по номеру map.poly() с помощью as.polygon=TRUE, а затем наметить это с помощью polygon() и border=FALSE.

Вы можете видеть этоесли вы просматриваете код map, просто введя его в командной строке и нажав Enter.

Вот код, который я использовал, чтобы получить то, что вы хотите:

map("state","tennessee",fill=T,col="white",names=T,plot=T)
coords = map.poly("county",region=c("tennessee,williamson","tennessee,davidson","tennessee,wilson","tennessee,cheatham"), boundary=T, interior=F, fill=F, as.polygon=T)
polygon(coords, col='red', border=F)
map("county",region=c("tennessee,williamson","tennessee,davidson","tennessee,wilson","tennessee,cheatham"),fill=F,interior=F,add=T)

enter image description here

После прочтения ?map я подумал, что просто сделать что-то вроде map(..., interior=F, fill=T, col='red') сработает, но, похоже, это не сработает.Может быть ошибка, но я не играл с этим пакетом достаточно, чтобы знать наверняка ...

...