【问题标题】:Linear function axis scaling in RR中的线性函数轴缩放
【发布时间】:2020-12-11 17:57:45
【问题描述】:

我有以下功能

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)。

【问题讨论】:

    标签: r axis scaling


    【解决方案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' s 默认值。我使用这些值来模仿 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= 设置 what 在每个刻度上放置。如果不存在(如上所示),它只会打印 at 值。
    • las=2 旋转数字使其垂直于轴线。我这样做是为了显示更多的数字,否则它们会掩盖更多。

    虽然这显示了彼此,但受画布大小的影响;如果您在全屏中执行相同的绘图,它将显示每个数字。

    【讨论】:

    • 非常感谢您的回答,非常有帮助!我可能没有很清楚地表达自己。当我显示 grid() 时,我遇到的另一个“问题”是大方块。在网格线对应于 x 和 y 值的意义上,是否可以使它们“更小”?我希望你明白我的意思。
    • 你读过?grid吗?它具有 nx=ny= 参数来更改行的定义方式。如果您想更具体地了解行的确切位置(而不是多少),请查看grid 的源代码并注意它使用@ 987654325@,它可以很容易地制作全高/全宽垂直/水平线。
    • 我想我现在明白了。你说的ylim=grid()无关。
    • 看我的编辑,我想这可能是你想要的。
    • 这正是我的意思。现在它很完美。非常感谢你的帮助。我还是 R 的新手,我正在努力学习。如果我的问题不够清楚,我很抱歉。
    猜你喜欢
    • 2015-10-21
    • 2017-12-28
    • 1970-01-01
    • 1970-01-01
    • 2013-01-08
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 2021-03-03
    相关资源
    最近更新 更多