我正在绘制一个相当奇怪的线框。 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))
答案 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
以及at
和labels
组件的组合来完全控制格子图的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")))