Текстовые метки на графике поверх многоугольника без наложения
Использование pointLabel в пакете maptools в R будет отображать текстовые метки для точек, чтобы избежать наложения текста.
Но есть ли способ избежать / минимизировать совпадение текстовых меток с контуром нижележащего многоугольника, созданного из файла формы?
Например, при отображении местоположения блоков переписи желательно, чтобы текстовые метки не попадали поверх близлежащих границ блоков переписи и т. Д.
Данные, которые я использую, были получены в 2000 году, в блоке переписей 2000 года, по адресу: http://www.nyc.gov/html/dcp/download/bytes/nycd_12aav.zip
и распаковывает в следующие 5 файлов:
nycd.dbf
nycd.prj
nycd.shp
nycd.shp.xml
nycd.shx
Я намеревался маркировать различные блоки из моего собственного текстового файла, который содержит вертикальный список:
Zone 1
Zone 2
Zone 3
Zone 4
etc.
Я загрузил следующие библиотеки:
library(gpclib)
library(maptools)
library(RColorBrewer)
library(classInt)
library(maps)
Я тогда попробовал:
zip=readShapePoly(file.choose())
и выбрал nycd.shp
файл выше. Затем:
plot(zip, col="lightgray", border="black", axes=TRUE, pbg="white")
И если это не вызовет других конфликтов с надписью, я бы предпочел раскрасить это:
zip@data$noise <- rnorm(nrow(zip@data))
colors=brewer.pal(9, "YlOrRd")
cols[is.na(cols)] <- "#D9D9D9"
brks=classIntervals(zip$noise, n=9, style="quantile")$brks
plot(zip, col=colors[findInterval(zip$noise, brks,all.inside=TRUE)], axes=F)
Как бы я пометил различные регионы зоной 1, зоной 2 и т. Д., Не уменьшая / не уменьшая метку за пределами каждого полигона? Мои вопросы подразумевают, что я знаю, как пометить файлы форм текстом. Я не знаю, как маркировать фигуры словами, только точками с их значением xy или выражением типа альфа / бета с pointLabel
, Я могу выяснить некоторые функциональные возможности с maps
инструмент, если текст содержится в исходном файле и поэтому может быть доступен с помощью $name
расширение. Аналогично коду, который я видел из http://geography.uoregon.edu/GeogR/examples/maps_examples02.htm:
# map of large cities
data(world.cities) # make the world cities location data set from the maps package available
# match the large cities with those in the database
m <- match(paste(tolower(as.character(cities$City)),tolower(as.character(cities$Country))),
paste(tolower(world.cities$name),tolower(world.cities$country.etc)))
# assign the world.cities location information to the large cities
big.cities <- NULL
big.cities$name <- cities2$City
big.cities$long <- world.cities$long[m]
big.cities$lat <- world.cities$lat[m]
big.cities
# plot the map
map("world")
map.axes()
points(big.cities$long,big.cities$lat, col="blue")
text(big.cities$long, big.cities$lat, big.cities$name, col="red", cex=.5
Но, к сожалению, это не решение для меня, так как нет $name
расширение с метками, которые я хотел бы использовать. Все, что я могу сказать, это то, что я не писал, пока не прошел через этот сайт с внутренним поиском и последние несколько дней в Интернете. Из того, что я видел, является то, что этот сайт и это сообщество помогают новичкам [относительно очень продвинутых навыков людей здесь], таких как я.
Заранее спасибо.
1 ответ
В отсутствие примера я предложу то, что легко доступно в пакете plotrix
> require(plotrix)
> x<-rnorm(10)
> y<-rnorm(10)
> plot(x,y); thigmophobe.labels(x,y,labels=paste(round(x,2),round(y,2)))