在R中计算轴数_down_

时间:2012-03-16 20:53:41

标签: r lattice

我正在绘制一个相当奇怪的线框。 y轴应从-50到0运行,但需要用正数标记。所以原点应该是(0,50,0),y 沿着y轴减小

我的第一个想法是采取原始命令:

wireframe(z~x*(10*log10(y)), grid, colorkey=TRUE, drape=TRUE, scales=list(arrows=FALSE))

并在公式中否定y:

wireframe(z~x*(-10*log10(y)), grid, colorkey=TRUE, drape=TRUE, scales=list(arrows=FALSE))

但是线框太聪明了,并且将轴(和绘制的数据!)翻转过来,使得x轴现在从0上升到

如何在y轴上手动指定抽动标签?

编辑:这是产生此问题的R代码:

tf_model <- function(n,l){
 tf =  n*l
 return(tf)
}

n <- c(0:100)/100 * 0.1
l <- -c(0:100)/2
l <- 10^(l/10)

grid <- expand.grid(x=n, y=l)

grid$z <- tf_model(grid$x, grid$y)

library('lattice')
trellis.par.set("axis.line",list(col=NA,lty=1,lwd=1))

wireframe(z~x*(10*log10(y)), grid, colorkey=TRUE, drape=TRUE, scales=list(arrows=FALSE))

 wireframe(z~x*(-10*log10(y)), grid, colorkey=TRUE, drape=TRUE, scales=list(arrows=FALSE))

1 个答案:

答案 0 :(得分:3)

听起来你真正想要的是改变附加在y轴刻度线上的标签。您可以通过设置传递给labels参数的列表的y组件的scales组件来实现此目的:

wireframe(z~x*(10*log10(y)), grid, colorkey=TRUE, drape=TRUE, 
          scales = list(arrows = FALSE, y = list(labels = seq(0, 50, by = 10))))

## Or perhaps this -- I can't quite make out which you want.
wireframe(z~x*(10*log10(y)), grid, colorkey=TRUE, drape=TRUE, 
          scales = list(arrows = FALSE, y = list(labels = seq(50, 0, by = -10))))

通常,您可以通过设置ylim以及atlabels组件的组合来完全控制格子图的y轴。列表传递给scales

  • ylim :指定y轴的范围和方向。例如,设置ylim=c(0, 1000)以扩展y轴,或设置ylim=c(0,-50)以反转其方向。

  • 位于:控制轴上刻度线的位置。例如,scales = list(y=list(at=c(0,-50)))只会在默认轴的任一端点放置刻度线。

  • 标签:将标签设置为刻度标记(由函数的默认行为或at参数设置)。例如,scales = list(y=list(at=c(0,-50), labels=c("Zero", "Below Zero")))