如何将线条添加到使用晶格制作的水平图(abline以某种方式不起作用)?

时间:2011-10-01 18:12:44

标签: r lattice

我想在水平图上绘制水平和垂直线,对应于74到76的x值和28到32的y值。下面是我的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 个答案:

答案 0 :(得分:5)

这不是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