使用cex基于不同的矩阵在同一图表上绘制不同矩阵的两列

时间:2013-11-26 21:10:12

标签: r plot

我有一个问题,我的标题可能暗示但是给出这个例子可能会更容易。我正在研究Borcard等人给出的代码行。 2011年随鱼类分布。有一个地理坐标(x,y)的站点(spa)矩阵,这些站点的鱼类丰度矩阵(spe)和环境因子矩阵(env)。

根据网站表示鱼类分布的一种方法是使用以下代码:

windows(title="Species Locations", 9, 9)    
par(mfrow=c(2,2))               
plot(spa, asp=1, col="brown", cex=spe$TRU, main="Brown trout", 
xlab="x coordinate (km)", ylab="y coordinate (km)")
lines(spa, col="light blue")
plot(spa, asp=1, col="brown", cex=spe$OMB, main="Grayling", 
xlab="x coordinate (km)", ylab="y coordinate (km)")
lines(spa, col="light blue")

等...

然而,这绘制了OMB和TRU物种的2个不同图。 如何获得相同的图表,但同一图表上的OMB和TRU物种,仍然使用cex但是为这两个物种获得不同颜色的圆圈?

这会有很多帮助!

先谢谢,

1 个答案:

答案 0 :(得分:0)

我想你想要(类似的东西)

plot(spa, asp = 1, type = "n", main = "Brown trout", 
     xlab = "x coordinate (km)", ylab = "y coordinate (km)")
lines(spa, col="light blue")
points(spa, col = "brown", cex = spe$TRU)
points(spa, col = "green", cex = spe$OMB)
legend("topright", legend = c("Brown Trout", "Grayling"),
       col = c("brown","green"), pch = 1, bty = "n")

这里的主要想法是只使用points()调用按顺序添加数据点,就像在绘制数据后使用lines()为每个绘图添加行一样(注意这里我将它们绘制出来)避免过度绘制数据的背景。)

然而,您想要做的事情有一个明确的问题;这两个points()调用基本上是在绘图上的相同位置绘制数据,因此您可能会遇到一组数据的问题,这些数据会超过其他物种的数据。

如果你想在同一个图上有很多物种(不只是两个)(多个情节就像他们的例子),那么我建议改用格子 ggplot2 做绘图,但你需要先按一下数据。如果您想用获取Borcard 的示例所需的代码来更新您的问题,那么我将使用这样的示例更新我的答案。我觉得这是显示这些数据的一种更好的方式,而不是在同一个房地产上覆盖两个或更多物种。