我必须绘制几个红外光谱。带有此图的x轴必须在2000到500之间拉伸。我已尝试axis(side=1,at=c(4000,3500,2000,1500,1000,500))
,但这不会在标签之间产生相同的距离。我已经搜索了将近2个小时,但无法弄清楚如何实现这一目标。
帮助将不胜感激。
提前致谢
答案 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)