Как сделать регулярную метку на уровне графика (решетки) с нерегулярными числами? - PullRequest
1 голос
/ 27 июня 2019

Мне нужно сделать метеорологические карты с решеткой пакета.Но я нашел проблему в команде levelplot ().Я могу сделать карты с помощью команды, используя обычную метку.Например: карты корреляции с меткой 0, 0,1, 0,15, 0,2, 0,25, 0,3, 0,35 0,4 ... В этом примере метка пропускается пять на пять (Рис.1).

h1<- levelplot(var~x*y,data = idw.msk.dfr,contour=F,at=seq(0,0.5,0.05),
           par.settings = paleta1,main = "correlation map",
           xlab = NULL, ylab = NULL, ylim = c(-60,15), xlim = c(-90,-30))

Рисунок 1:

Figure 1

Но мне нужно сделать карты с нерегулярными значениями.Например: 0, 0,1, 0,15, 0,2, 0,22, 0,25, 0,40 ... Когда я запишу эти значения в код, я получу такой результат (Рис.2):

h1<- levelplot(var~x*y,data = idw.msk.dfr,contour=F,at=c(0,0.1,0.15,0.2,0.22,0.25,0.4,0.5),
           par.settings = paleta1,main = "correlation map",
           xlab = NULL, ylab = NULL, ylim = c(-60,15), xlim = c(-90,-30))

Рисунок 2 Figure 2

Обратите внимание, что метка карты очень странная и неправильная.

Итак.Как мне решить эту проблему?Я буду признателен за вашу помощь.

1 Ответ

0 голосов
/ 05 июля 2019

Вам необходимо указать пользовательский цветовой ключ. Добавьте цветовой ключ к функции levelplot.

x <- seq(pi/4, 5 * pi, length = 100)
y <- seq(pi/4, 5 * pi, length = 100)
r <- as.vector(sqrt(outer(x^2, y^2, "+")))
grid <- expand.grid(x=x, y=y)
grid$z <- cos(r^2) * exp(-r/(pi^3))

breaks <- c(0, 0.1, 0.15, 0.2, 0.22, 0.25, 0.4, 0.5)

levelplot(z~x*y, grid, at=breaks)

enter image description here

myColorkey=list(at=breaks, labels=list(at=breaks, labels=breaks))

levelplot(z~x*y, grid, colorkey=myColorkey)

enter image description here

Чтобы иметь одинаковый размер для интервалов, измените аргумент at:

ats=seq(0, 0.5, by=0.07)
myColorkey=list(at=ats, labels=list(at=ats, labels=breaks))
levelplot(z~x*y, grid, colorkey=myColorkey)

enter image description here

...