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 大小的影响;如果您在全屏模式下执行相同的绘图,它会显示每个数字。
我有以下功能
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 大小的影响;如果您在全屏模式下执行相同的绘图,它会显示每个数字。