获取R-par(“yaxp”)中的tickmark矢量或间隔不起作用

时间:2013-04-04 08:48:16

标签: r plot axis

我有一个对数日志图,在y轴上显示从1到7的刻度线。我想获得函数的每个tickmark之间的间隔。

> par("yaxp")
[1]  1  7 -6

我期待par(“yaxp”)[3]为1.

为什么是-6?如何让R返回刻度线之间的间隔?

2 个答案:

答案 0 :(得分:1)

这绝对与它是一个对数比例

有关

来自?par文档:

  

xaxp -   形式为c(x1,x2,n)的向量给出了坐标   极端刻度标记和刻度标记之间的间隔数   par(“xlog”)是假的。否则,当日志坐标处于活动状态时,   三个值具有不同的含义:对于小范围,n是   负数,并且刻度线与线性情况一样,否则,n表示   1:3,指定一个案例编号,x1和x2是最低的   用户坐标内的最高功率10,标准差(“usr”)[1:2]。   (“usr”坐标在这里进行log10转换!)

请参阅:

x<-1:100
y<-1:100
plot(x,y,log="y")
par("yaxp")
par("ylog")

相比
plot(log(x),log(y))
par("ylog")
par("yaxp")

答案 1 :(得分:1)

如在其他帮助中所述,当使用日志时,xaxp的含义有点不同。但是,由于n为负,我们仍处于线性情况。在其他工作中,步骤之间的距离是

 (1-7)/(-6) = 1

您可以使用axTicks来获取axes内部使用的标记来绘制标记。这是一个在axTicks的帮助下修改的示例,用于显示n的差异值:

op <- par(mfrow = c(4, 1))
for(x in 9999 * c(1/99999,1, 2, 8)) {
  plot(x, 9, log = "x")
  cat(formatC(par("xaxp"), width = 5),";", T <- axTicks(1),"\n")
  rug(T, col =  adjustcolor("red", 0.5), lwd = 4)
}
par(op)

 ## n negative (your case): linear case 
 0.05  0.25    -4 ; 0.05 0.1 0.15 0.2 0.25 
 ## n =3 :     k 10^j with k in {1,2,5} & j in par("usr")[1:2]
 1000 1e+05     3 ; 200 500 1000 2000 5000 10000 20000 50000 1e+05 2e+05 5e+05 
 ## n =2     k 10^j with k in {1,5} & j in par("usr")[1:2]
 1000 1e+06     2 ; 500 1000 5000 10000 50000 1e+05 5e+05 1e+06 
 ## n =1 :  10^j with j in par("usr")[1:2]
 1000 1e+07     1 ; 1000 10000 1e+05 1e+06 1e+07