R图例不根据点显示颜色

时间:2016-03-31 09:04:41

标签: r plot colors legend points

所以我在R中制作了一个情节,有很多不同的颜色表明我的23个类别中哪一个属于一个点。点的颜色通过矢量(stratumcol,这是一个23级的因子)添加。

当我添加图例时,试图让它显示颜色及其类别,似乎它们不匹配(使用ordihull进行测试,请参见下图)。

这是我的情节代码:

plot(pca_nmdsscores, type = "n")
points(pca_nmdsscores, col=stratumcol, cex=1.5, pch = 15)
legend("right","top",levels(stratumcol),cex=.8, col = as.numeric(stratumcol), pch =15, lty = 0) # pch = stratumcol
ordihull(pca_nmdsscores, groups = stratumcol,draw = "polygon", col ="purple",label = T, show.groups = "LateMoistRich")
ordihull(pca_nmdsscores, groups = stratumcol,draw = "polygon", col ="blue",label = T, show.groups = "MidWetPoor")

这里我的Rplot应该是可见的。如你所见,我的类别" MaleMoistRich"将点与粉红色相连,但在图例中,这种颜色命名为" MidMoistRich"。

同样适用于" MidWetPoor",连接中蓝​​点,在图例中,这种颜色指的是" LateMoistPoor"。

如何解决这个问题?

我尝试寻找解决方案,但没有遇到任何可以解决的问题 - 包括"独特的" (它不会改变任何东西,因为我的调色板已定义为23种颜色,所以无论如何都不需要回收它们)

[来自R的图,显示图例和点颜色] [1]

好的 - 所以,因为我是新手,我无法上传我的情节图片......

但请在此处查看:http://i.stack.imgur.com/pzn2y.png

/感谢

编辑: 解决方案是不要在我的因素上使用levels()!不在legend = levels(stratumcol)中,也不在col = levels(stratumcol)中。 Richard和DeveauP建议的水平可能是问题。

这造成了一个新问题:我的legen显示了整个因素,而不仅仅是其中的水平(但颜色对应于正确的点颜色,这是原始问题)。

这个新问题通过使用" unique()"而不是" levels()"。

legend("Right","top",legend=unique(stratumcol), cex=.8, col = unique(stratumcol), pch=15, lty=0)

我找到了解决方案

1 个答案:

答案 0 :(得分:1)

尝试

legend("right","top",legend = levels(stratumcol),cex=.8, col = levels(stratumcol), pch =15, lty = 0)