1

R の maptools パッケージで pointLabel を使用すると、ポイントのテキスト ラベルがプロットされ、テキストの重複が回避されます。

しかし、シェイプ ファイルから作成された下にあるポリゴンの輪郭とテキスト ラベルの重なりを回避/最小化する方法はありますか?

たとえば、国勢調査区の位置をプロットする場合、テキスト ラベルが近くの国勢調査区の境界線の上に重ならないようにする必要があります。

私が使用しているデータは、 http ://www.nyc.gov/html/dcp/download/bytes/nycd_12aav.zip にある 2000 Census Blocks Version 12A から取得したものです。

次の 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 値を持つポイントのみ、または alpha/beta のような式としてラベルを付ける方法がわかりませんpointLabelmapsテキストが元のファイルに含まれていて、拡張子を付けてアクセスできる場合は、このツールでいくつかの機能を理解できます$namehttp://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残念ながら、使用したいラベルの拡張機能がないため、これは私にとっての解決策ではありません。私が言えることは、内部検索でこのサイトを調べ、ここ数日間オンラインでグーグル検索するまで投稿しなかったということだけです。私が見てきたことから、このサイトとこのコミュニティは、[ここにいる人々の非常に高度なスキルに比べて] 私のような初心者を助けている.

前もって感謝します。

4

1 に答える 1

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)))
于 2013-01-04T00:22:30.563 に答える