使用R中maptools库中的pointLabel()自动标注绘图

时间:2015-09-22 13:07:59

标签: r maptools

我正在尝试使用模拟退火算法解决工程图纸的自动标签贴装问题。我在R中的pointLabel()库中遇到了maptools函数。但是,我发现虽然函数能够最佳地放置标签,但它并没有考虑底层画画。我不希望标签与绘图线重叠。有什么办法可以实现吗?此外,我的标签在宽度和高度方面都有不同的尺寸。有没有什么方法可以指定每个标签的尺寸,而不是标签的原点?

我不知道如何上传必要的csv文件以重现我的工作,但是这里有保管箱链接https://www.dropbox.com/s/85qqs4nlvm4crck/TextBoxData.rar?dl=0,这是我的代码:

library(dplyr)
library(maptools)    

#Known Size of Sheet
xmin <- -357.7
xmax <- 19.3
ymin <- -90.2
ymax <- 159.7

#Read in the data
linescoords <- read.csv("Linecoords.csv")

#Coordinates translation
linescoords$X  <- linescoords$X - xmin
linescoords$Y <- linescoords$Y - ymin

#Plot the figure
xlimit <- c(-10, abs(xmin-xmax)+10 )
ylimit <- c(-10, abs(ymin-ymax)+10 )
plot(linescoords$X, linescoords$Y, "p", xlim=xlimit, ylim = ylimit)

i <- seq(1, nrow(linescoords), 2)
for(x in i){
segments(linescoords$X[x], linescoords$Y[x],
         linescoords$X[x+1], linescoords$Y[x+1])
}


#Read in text labels data
labels <- read.csv("labels.csv")

#Text labels Coordinates translation
labels$x <- labels$x - xmin
labels$y <- labels$y - ymin
labels$xminl <- labels$xminl - xmin
labels$xmaxl <- labels$xmaxl - xmin
labels$yminl <- labels$yminl - ymin
labels$ymaxl <- labels$ymaxl - ymin

#Point of Origin for labels
points(labels$x, labels$y, pch=16, col="red")

#Width & Height of labels
labels <- labels %>% mutate(width=abs(xminl-xmaxl), height=abs(yminl-ymaxl))

pointLabel(labels$x, labels$y, labels$Point)

任何见解都会有所帮助。感谢。

0 个答案:

没有答案