1

这大概是一个基本的问题。我制作了一个图,显示不同狐猴的家庭范围。伟大的!困难的部分完成了。但它们都是青柠色。如何为我的 5 个 ID 中的每一个选择不同的颜色?看起来应该很简单,但我在网上看不到任何东西。有人可以提出一些建议吗?

我在下面粘贴了我的代码

dd <- read.csv(file.choose(), header = T)
xy <- dd[,c("X","Y")]
id <- dd[,"ID"]
hr<- mcp(xy,id,percent=95)
plot(hr,
main="95% Minimum Convex Polygon",
xlab="X Coordinate",
ylab="Y Coordinate")

一旦我的 5 个 ID(frodo、bilbo、merry、pippin、sam)有 5 种不同的颜色,那么创建一个显示颜色和相关 ID 的图例也会很棒。我在玩下面的代码

legend('topright', names(hr)[-1] , 
lty=1, col=c('red', 'blue', 'green',' brown'), bty='o', cex=1.5)

但这似乎只是显示 x,y 坐标的图例,而不是我在图中显示的 ID。谁能告诉我我做错了什么?

编辑:我明白了!函数“col=”不适用于多边形。它的“colpol =”感谢所有帮助

4

2 回答 2

1

hr 对象有一个类“area”和“data.frame”。有一种面积法plot。它有一个 colpol 论点。查看?plot.areaadehabitat 何时加载:

 plot(hr, colpol=c('red', 'blue', 'green',' brown') )

最初不清楚您是否要为生成的 4 个(不是 5 个)区域着色。我以为您想要按组着色的点,这就是产生的结果。如果您知道 ID 已经是一个因素,则不需要调用因素。as.numeric应用于一个因子会将其转换为从 1 到级别数的整数,并且用作该 5 种颜色向量的索引。如果您想查看所有 657 种颜色的名称,只需键入colors()?colors有关管理调色板的其他链接,请参阅。正如所指出的,我们没有数据或mcp函数来查看 hr 对象被绘制成什么。如果该对象的绘图方法没有为点分配单独的颜色,则改为执行以下操作:

 points(xy[,1], xy[,2],
 col = c("red", "green", "blue", "orange", "sandybrown")[as.numeric(factor(dd[,"ID"]))]
)
于 2013-09-06T13:49:19.470 回答
0

Is this what you are looking for

plot(hr$X,hr$Y,main="95% Minimum Convex Polygon",xlab="X Coordinate",
 ylab="Y Coordinate",
 col = rainbow(length(hr$ID))[rank(hr$ID)],
 pch=c(1:25)[as.numeric(factor(hr$ID))])

 legend('topleft', unique(unlist(as.character(factor(hr$ID)))) ,lty=1, 
   col=rainbow(length(hr$ID))[ unique(unlist(rank(hr$ID)))],
   pch=c(1:25)[unique(unlist(as.numeric(factor(hr$ID))))], 
   bty='o', cex=1.5)
于 2013-09-06T14:54:20.373 回答