Как добавить линии в график уровня, созданный с помощью решетки (аблайн как-то не работает)? - PullRequest
1 голос
/ 01 октября 2011

Я хочу нарисовать горизонтальные и вертикальные линии на моем графике уровня, соответствующие значениям x от 74 до 76 и значениям y от 28 до 32. Ниже мой R-код. Но когда я запускаю следующее, я получаю графики уровней, но без линий. Я также не получаю ошибок от R. Темой по умолчанию в моей установке является то, что отображает значения на розовый и голубой. Я также попытался использовать функцию панели, но мне тоже не повезло.

levelplot(d_fire_count_nom ~ longitude + latitude | factor(day)+factor(year), 
          data = asia,
          subset = (month == 10),  aspect="iso", contour = FALSE, layout=c(1,1), 
          main="If a fire occured in a region (low confidence) in October during 2001-2008", 
          scales=list(x=list(at=seq(from=60,to=98, by=1)), 
                      y=list(at=seq(from=5,to=38,by=1)),cex=.7, alternating=3), 
          xlim=c(60, 98), ylim=c(5, 38),
          abline=list(h=74:76, v=28:32, col="grey"))

1 Ответ

5 голосов
/ 02 октября 2011

Это не так, как lattice графика работает.На самом деле, если вы прочитаете ?levelplot, вы увидите, что для этой функции с именем abline нет аргумента, поэтому я не уверен, откуда вы взяли этот синтаксис.

Вы добавляете вещи в lattice графика, изменив функцию panel.Существует множество panel.* функций для выполнения различных задач, таких как построение точек, линий, сглаживание диаграмм рассеяния и т. Д. В этом случае нам бы хотелось использовать panel.abline.Итак, мы определяем нашу собственную функцию panel.

Здесь используется самый первый пример из ?levelplot:

x <- seq(pi/4, 5 * pi, length.out = 100)
y <- seq(pi/4, 5 * pi, length.out = 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))
levelplot(z~x*y, grid,
        panel = function(...){
            panel.levelplot(...)
            panel.abline(h = 2.5)
            panel.abline(v = 2.5)
        }, 
        cuts = 50, scales=list(log="e"), xlab="",
        ylab="", main="Weird Function", sub="with log scales",
        colorkey = FALSE, region = TRUE)

Наша новая функция панели должна сначала нарисовать график уровня, поэтому мы имеемсначала позвоните panel.levelplot.Затем мы хотим добавить несколько строк, поэтому для этой цели добавим panel.abline.

...