R中的线性函数轴缩放

Linear function axis scaling in R

我有以下功能

C=15
S=seq(0,12,.1)
pA=1
pS=0.5

    
    A <- function(S) (C/pA)-(pA/pS)*S
    
    plot (S, A(S), type="l", col="red", ylim=c(0,15), xlim=c(0,15), xlab="S", ylab="A")
    text(8, 11.5, "Function", col = "red", cex=.9)
    text(11, 10.2, expression(A==frac(C,p[S])-frac(p[A],p[S])%.%S), cex=.9, col = "red")
    grid()

如何缩放轴以便我可以“缩小”一点。我正在寻找类似于 ylim 的函数,但我可以说: ylim=c(0,15, by=1).

更新

您的“缩小”似乎是针对网格线的,而不是针对轴或其他任何东西。我会在下面保留之前的答案,但我认为这应该可以解决这个问题。

# no change yet
plot (S, A(S), type="l", col="red", ylim=c(0,15), xlim=c(0,15), xlab="S", ylab="A")
text(8, 11.5, "Function", col = "red", cex=.9)
text(11, 10.2, expression(A==frac(C,p[S])-frac(p[A],p[S])%.%S), cex=.9, col = "red")
# no call to grid, since we want to control it a little more precisely
abline(h = seq(0, 15), col = "lightgray", lty = "dotted", lwd = par("lwd"))
abline(v = seq(0, 15, by = 5), col = "lightgray", lty = "dotted", lwd = par("lwd"))

您可以 只是 abline(h=seq(...)) 而不是设置 col=lty=lwd=,但要意识到 abline 的默认值与 grid 的默认值不同。我使用这些值来模仿 grid 的外观和感觉。


旧答案

我认为你的意思是改变 y 轴 labels,而不是 y 轴 limits(这就是全部 ylim=可以影响)。

使用基础 R 图形:

plot (S, A(S), type="l", col="red", ylim=c(0,15), xlim=c(0,15), xlab="S", ylab="A",
      yaxt = "n") # this is new
text(8, 11.5, "Function", col = "red", cex=.9)
text(11, 10.2, expression(A==frac(C,p[S])-frac(p[A],p[S])%.%S), cex=.9, col = "red")
grid()
axis(2, at = 1:15, las = 2)

解释:

  • plot(..., yaxt = "n") 表示 绘制 y 轴刻度和标签,参见 ?par
  • axis(...) 将轴添加到一侧。就其本身而言,它只会添加一个默认轴。
  • at= 设置 刻度和标签的放置位置。
  • labels= 设置 什么 放在每个刻度上。如果不存在(如上所示),它只打印 at 值。
  • las=2 旋转数字,使其垂直于轴线。我这样做是为了显示更多的数字,否则它们会掩盖更多。

虽然这显示了彼此,但受 canvas 大小的影响;如果您在全屏模式下执行相同的绘图,它会显示每个数字。