2011-10-01 47 views
1

我想在水平圖上繪製水平和垂直線,對應的x值從74到76,y值從28到32.下面是我的R代碼。但是當我運行以下時,我得到的是水平圖,但沒有線。我也從R接收沒有錯誤。我安裝的默認主題是將值映射到粉紅色和青色的東西。我也試過使用面板功能,但也沒有運氣。如何將線添加到使用點陣製作的水平圖(abline莫名其妙地不工作)?

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")) 

回答

4

這不是如何lattice圖形工作。實際上,如果您閱讀?levelplot,您會看到該函數沒有任何參數,稱爲abline,所以我不確定從哪裏獲得該語法。

通過更改panel函數,可以將圖形添加到lattice圖形中。有許多功能用於做各種事情,如繪製點,線,散點圖平滑器等。在這種情況下,我們想要使用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) 

我們新的面板功能需要先畫出levelplot,所以我們把它稱之爲panel.levelplot第一。然後我們要添加一些行,所以我們爲此添加了panel.abline

+0

@Ridhima代碼對我來說運行良好。我認爲你複製+粘貼它引入不尋常的字符的方式出了問題。 – joran

+0

@ Joran我被卡住了:(levelplot(d_fire_count_high〜經度+緯度| factor(day)+ factor(year),data = asia, panel = function(...){ panel.levelplot(...) (y = 74) panel.abline(v = 28) }, subset =(month == 10),aspect =「iso」,contour = FALSE,layout = c(1,1),main =「如果2001-2008年10月在一個地區發生火災(高信度)」,scale = 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)) – Ridhima

+0

當我運行上面的代碼時,我得到了沒有錯誤,但沒有行。如果有更好的方式向我展示我的代碼,請讓我知道 – Ridhima

相關問題