将y轴缩放为R中的幂10值

时间:2016-06-26 15:16:01

标签: r

我试图在y轴上只获得10次幂,我尝试了StackOverflow上提供的许多方法但没有产生我想要的。

我想定义y轴的比例从10 ^ 2开始,然后下一个tick在10 ^ 4然后在10 ^ 6。

我尝试了xaxtat以及axis以及提到的所有内容here,但没有一项适用于10 ^ x ..

2 个答案:

答案 0 :(得分:3)

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

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

plot1

如果要控制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);

plot2

答案 1 :(得分:1)

axis()有效:

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

enter image description here

唯一的问题是,这肯定不是一种好的演示方式。你知道1e+n有多快吗?正如你在图中已经看到的那样,1e + 2和1e + 4的刻度几乎一致,因为1e + 6是如此之大。如果您的数据范围为1 ~ 1e+8甚至更高,那么您最好在对数范围内绘制它们。

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

enter image description here