在两个值之间拉伸x轴

时间:2014-05-15 13:54:22

标签: r plot

我必须绘制几个红外光谱。带有此图的x轴必须​​在2000到500之间拉伸。我已尝试axis(side=1,at=c(4000,3500,2000,1500,1000,500)),但这不会在标签之间产生相同的距离。我已经搜索了将近2个小时,但无法弄清楚如何实现这一目标。

帮助将不胜感激。

提前致谢

1 个答案:

答案 0 :(得分:0)

我不认为在基础图形中有一种特别干净的方法 - 毫无疑问,在许多图形软件包中有一些可以做到这一点,但是继承人'我的解决方法是因为我认为你正在尝试要做。

#Some data to plot
x <- 0:4000
y <- sin(x/100)

#A function to do the stretching that you describe
stretcher <- function(x)
{
  lower <- 500       ##lower end of expansion
  upper <- 2000      ##upper end of expansion
  stretchfactor <- 3 ##must be greater than 1, factor of expansion
  x[x>upper] <- x[x>upper] + (stretchfactor-1) * (upper-lower)
  x[x<=upper & x>lower] <- (x[x<=upper & x>lower] - lower) * stretchfactor + lower
  x
}

#Create the plot
plot(stretcher(x),y,axes=FALSE)
labels <- c(4000,3500,3000,2500,2000,1500,1000,500)
box()
axis(2)
axis(1,labels=labels,at=stretcher(labels))

我也强调休息时间如下:

abline(v=stretcher(2000),col='red',lty=2)
abline(v=stretcher(500),col='red',lty=2)