0

好的,所以我在这里得到了一些代码来绘制人口动态图,我希望在曲线的每个“末端”,在 x 和 y 轴上写一个特定的值,如下所示:https:// images.ecosia.org/EIQKP81uukSNIVwegG9q5w1xhmM=/0x390/smart/https%3A%2F%2Fwww.webpages.uidaho.edu%2Fwlf448%2Fimages%2Fstableb.gif

我首先尝试删除轴号,因为我不需要它们,但这里真正的问题是我有这些图的桶负载(有代码的循环版本,但我不会在这里显示它以保留它简单),我想自动添加这些值。

### Outcome study with isoclines

#Clearing workspace
rm(list=ls())
graphics.off()

#plot setup
#par(mfrow=c(2,2))

#Parameters
lambda1<- 3.2
lambda2<- 3
alphs <- matrix(c(0.005, 0.005, 0.0045, 0.004), ncol = 2, byrow = TRUE)

#Plotting isoclines
plot(0,0,type="l",xlab='N1',ylab='N2',col='blue',xlim =c(0,470),
     ylim = c(0,750))
abline(a=((lambda1-1)/alphs[1,2]),b=(- alphs[1,1]/alphs[1,2]),col='blue')
abline(a=((lambda2-1)/alphs[2,2]),b=(- alphs[2,1]/alphs[2,2]),col='green')

legend("topright", legend = c("Species 1", "Species 2"),lty = 1, 
       col = c("blue", "green"), bty = "n")

arrows(x0 = 300, y0 = 600, x1 = 270, y1 = 600, length = 0.06,col="blue")
arrows(x0 = 300, y0 = 600, x1 = 300, y1 = 510, length = 0.06, col="green")
arrows(x0 = 50, y0 = 100, x1 = 80, y1 = 100, length = 0.06,col="blue")
arrows(x0 = 50, y0 = 100, x1 = 50, y1 = 190, length = 0.06, col="green")

老实说,我不知道会发生什么,但一定有办法做到这一点,对吧?

4

1 回答 1

0

只要能计算出要添加文本的位置,就可以使用axis()函数添加。例如,要将值放在 y 轴上,您希望它们位于 x 等于 的位置par("usr")[1]。这段代码做到了:

x <- par("usr")[1]
a <- c(((lambda1-1)/alphs[1,2]), ((lambda2-1)/alphs[2,2]))
b <- c((- alphs[1,1]/alphs[1,2]), (- alphs[2,1]/alphs[2,2]))
y <- a + b*x
axis(2, at = y, labels = expression(K[2], K[1]/a[2,1]), tick = FALSE, line = -1)

我认为标签不太正确,因为x是负数,而不是零;您可以添加xaxs = "i"到您的绘图调用中以避免这种情况。您可以通过更改调用line中的值将它们移入或移出图表。axis()通过plot上面的更改和代码,我得到了这个:

截屏

于 2019-06-19T12:43:20.890 回答