Как добавить линии в график уровня, созданный с помощью решетки (аблайн как-то не работает)?
Я хочу нарисовать горизонтальные и вертикальные линии на моем графике уровня, соответствующие значениям 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 ответ
Это не так 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
для этой цели.