2012-08-15 87 views
2

我想格式化我的x轴为log2(n+1)格式,所以x轴标签对应于1,2,4,16等等。如何以log2(n + 1)格式重新缩放x轴上的标签?

输入:

x <- c(1, 2, 3, 11, 15) 
y <- c(1.1, 1.2, .4, 2.1, 1.5) 

plot(log2(x + 1), y, axes=FALSE) 
axis(1, at=(labels=as.character(formatC(x))), cex.axis=0.9) 

但情节我拿到仍然有原来的X轴的值。

enter image description here

我怎样才能让我的x轴功率2(1,2,4,16,等等)?

回答

4

我想这就是你想要的。

x<-c(1,2,3,11,15) 
y<-c(1.1,1.2,.4,2.1,1.5) 
lab<-c(1,2,4,16) 
plot(log2(x+1),y,xaxt="n",xlab="x") 
axis(1,at=log2(lab+1),labels=lab) 

它还可能是计算等距隔开标签有用:

lab<-round(2^seq(min(log2(x+1)),max(log2(x+1)),length.out=4)-1) 
+1

我需要C(1,2,4,8,16,32)等距隔开。有可能实现吗? – Manish 2012-08-15 07:26:49

+0

对于'log2(x + 1)',序列1,3,7,15,31将是等距的。你的是'log2(x)'。 – Roland 2012-08-15 07:34:13

+0

X <-c(15.918,8.822,0.619,0.060,0.479,2.913,2.456,0.927,1.121 0.255,0.000,0.549,0.095)Y <-c(19,图7,0,0,1,3,2, 1,0,0,1,1,0) 如果我使用乌尔系列实验室<-round(2^SEQ(分钟(LOG2(X + 1)),最大值(LOG2(X + 1)),length.out = 6)-1) 我得到0 1 2 4 9 16,但我需要添加1,3,7,15,31(如u建议的)等距隔开。我该怎么做? – Manish 2012-08-15 07:50:10