在曲线中包含rownames作为标签

时间:2016-01-27 05:25:35

标签: r plot

我正在使用包TSP探索R中的旅游销售人员问题,一切正常但我唯一的问题是图中城市的名称没有出现。

基本上在最后一行代码中,我希望将rownames作为标签

代码:

library(TSP)
set.seed(123)
x <- data.frame(x = runif(20), y = runif(20), row.names = LETTERS[1:20])
## create a TSP
etsp <- ETSP(x)
etsp
## use some methods
n_of_cities(etsp)
labels(etsp)
## plot ETSP and solution
tour <- solve_TSP(etsp)
tour
plot(etsp, tour, tour_col = "red")

2 个答案:

答案 0 :(得分:3)

如果您希望将城市名称作为图表中的标签,则可以使用库ggplot中的geom_text。诀窍是以正确的方式准备您的数据。

对于绘图,数据需要通过路径重新排序。

tdf <- as.data.frame(tour)
orderd.cities.tf <- as.data.frame(etsp[tdf$tour,]) 
#          x          y
# C 0.40897692 0.64050681
# L 0.45333416 0.90229905
# A 0.28757752 0.88953932

之后您可以使用

绘制此数据
ggplot(ordered.cities.tf,
       aes(x=x,y=y,label=rownames(ordered.cities.tf)))+
    geom_polygon(fill=NA,color="red")+
    geom_point(shape=15,color="white",size=6)+geom_text()

enter image description here

答案 1 :(得分:2)

您可以分两步获取行名称作为标签。首先,将您的调用更改为plot以包含参数xaxt='n',这将告诉情节不要呈现其默认的x标签。拨打axis(),指定您要使用的标签。

plot(etsp, tour, tour_col = "red", xaxt='n')
axis(1, at=etsp[1:20], labels=labels(etsp))

使用axis()的诀窍是at值是绘图中的x值,可以从etsp访问,相应的标签来自labels()功能。

enter image description here