【问题标题】:Is there a way to add a value on an axis where the curve of the graph hits it?有没有办法在图表曲线碰到它的轴上添加一个值?
【发布时间】:2019-11-02 00:31:39
【问题描述】:

好的,所以我在这里得到了一些代码来绘制人口动态图,我希望在曲线的每个“末端”,在 x 和 y 轴上写一个特定的值,如下所示:@ 987654321@

我首先尝试删除轴号,因为我不需要它们,但这里的真正问题是我有大量这些图(有一个循环版本的代码,但我不会在这里展示为了简单起见),我想自动添加这些值。

### 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")

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

【问题讨论】:

    标签: r plot axis-labels


    【解决方案1】:

    只要能计算出要添加文字的位置,就可以使用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" 添加到您的绘图调用中以避免这种情况。您可以通过在axis() 调用中更改line 的值将它们移入或移出图表。通过plot 更改和上面的代码,我得到了:

    【讨论】:

    • 是的!这通常是我正在寻找的。谢谢,这个会很好看(:之前稍微抬头看了一下axis函数,不知道怎么用。
    猜你喜欢
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-16
    • 1970-01-01
    • 2015-03-04
    • 1970-01-01
    • 2020-06-06
    相关资源
    最近更新 更多