【问题标题】:Scale the y axis as power 10 values in R将 y 轴缩放为 R 中的 10 次幂值
【发布时间】:2016-06-26 15:16:00
【问题描述】:

我试图在 y 轴上仅获得 10 次方刻度,并且我尝试了 StackOverflow 上提供的许多方法,但都没有产生我想要的。

我想定义 y 轴的刻度从 10^2 开始,然后下一个刻度是 10^4,然后是 10^6。

我已经尝试过xaxtataxis 以及提到的所有内容 here,但没有一个适用于 10^x..

【问题讨论】:

标签: r


【解决方案1】:

plot.default() 函数提供了一个 log 参数,可用于轻松获取 x 轴、y 轴或两者的对数刻度。例如:

x <- 2:6;
y <- 10^x;
plot(x,y,log='y');

如果要控制y轴刻度,可以覆盖默认轴,按照正常方式绘制自己的:

## generate data
x <- 2:6;
y <- 10^x;

## precompute plot parameters
xlim <- c(2,6);
ylim <- c(10^2,10^6);
xticks <- 2:6;
yticks <- 10^seq(2L,6L,2L);

## draw plot
plot(NA,xlim=xlim,ylim=ylim,log='y',axes=F,xaxs='i',yaxs='i',xlab='x',ylab='y');
abline(v=xticks,col='lightgrey');
abline(h=yticks,col='lightgrey');
axis(1L,xticks,cex.axis=0.7);
axis(2L,yticks,sprintf('10^%d',as.integer(log10(yticks))),las=2L,cex.axis=0.7);
##axis(2L,yticks,sprintf('%.0e',yticks),las=2L,cex.axis=0.7); ## alternative
points(x,y,pch=19L,col='red',xpd=NA);

【讨论】:

    【解决方案2】:

    axis() 工作:

    x <- 2:6
    y <- 10 ^ x
    plot(x, y, yaxt = "n")
    axis(2, at = 10^(c(2, 4, 6)))
    

    唯一的问题是,这肯定不是一个好的展示方式。你知道1e+n 的增长速度有多快吗?正如您在图中已经看到的那样,1e+2 和 1e+4 的刻度几乎重合,因为 1e+6 太大了。如果您的数据范围为 1 ~ 1e+8 甚至更大,那么您最好将它们绘制在对数刻度上。

    plot(x, log10(y), yaxt = "n")
    axis(2, at = c(2,4,6))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-03
      • 2021-03-03
      • 2021-01-03
      相关资源
      最近更新 更多