Создание осей отсчета _down_ в R - PullRequest
3 голосов
/ 17 марта 2012

Я строю довольно странный каркас. Ось 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 до 50.

Как вручную указать метки тиков на моей оси 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 Ответ

3 голосов
/ 17 марта 2012

Похоже, что вы действительно хотите, чтобы изменить метки , которые прикреплены к отметкам оси 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))))

В общем, вы можете добиться довольно полного контроля, скажем, оси Y решетки, установив комбинацию ylim и компонентов at и labels списка, переданного в 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")))

...