2013-01-04 39 views
1

在R中的maptools包中使用pointLabel將繪製點的文本標籤以避免文本重疊。在多邊形上繪製點文本標籤不重疊

但是有沒有辦法避免/最小化文本標籤與從形狀文件創建的底層多邊形的輪廓的重疊?

例如,繪製普查塊的位置時,一個想文本標籤不落在附近的人口普查的塊邊界的頂部等

我使用的數據是從2000年的人口普查塊版本收購12A位於: 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以上。然後:由1區,2區等

[email protected]$noise <- rnorm(nrow([email protected])) 
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) 

我怎麼會標註各個區域:

plot(zip, col="lightgray", border="black", axes=TRUE, pbg="white") 

如果它不會導致其他衝突與標籤,我寧願它上色沒有/最小化標籤在每個多邊形之外延伸?我的問題意味着我知道如何用文本標記形狀文件。我不知道如何用文字標註形狀,只用xy值標記點,或者用pointLabel表示像alpha/beta這樣的表達。如果文本包含在原始文件中,並且因此可以用$name擴展名訪問,我可以使用maps工具找出一些功能。以類似的代碼,我從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擴展與我想用標籤,這不是我一個解決方案。我只能說,我沒有發佈,直到我經過這個網站的內部搜索,並在過去幾天網上搜索。從我所看到的是,這個網站和這個社區可以幫助我的初學者[相對於這裏的人們非常先進的技能]。

預先感謝您。

+2

我們中有些人已經得到了累什麼樣的數據的人可能會被工作猜測一應俱全。搜索SO「偉大的重現例子」。 –

+1

請告訴我們你至少試過了什麼 –

+0

好的。我在上面。謝謝。 – Aaron

回答

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)))