2011-12-06 11 views
6

R'deki bir çevre çizgisi içindeki alanı nasıl hesaplayabilirim? o R. bir kontur içinde bölgeyi caclulate mümkün olup olmadığını merak ediyorum

Örneğin, kaynaklanan kontür alanı:

sw<-loess(m~l+d) 
mypredict<-predict(sw, fitdata) # Where fitdata is a data.frame of an x and y matrix 

contour(x=seq(from=-2, to=2, length=30), y=seq(from=0, to=5, length=30), z=mypredict) 

Üzgünüm, bu kod olabilir biliyorum kıvrılmış olmak. Okumak zorsa. Basitçe oluşturulmuş bir konturun alanını nasıl hesaplayacağımı gösteren herhangi bir örnek yardımcı olabilir.

Yardımlarınız için teşekkür ederiz.

+1

Bir kontur içinde * alanı mı kastediyorsunuz? – Phonon

+0

Kontur nasıl tanımlanır (örnek) ... hangi bölgeyi istiyorsunuz? Bir sınırın koordinatlarına sahipseniz, nispeten kolaydır. – John

+0

Evet. Bir kontur içindeki alan. @John: Orijinal sorumu örnek olarak düzenleyeceğim. –

cevap

5

Teşekkür

library(sos) 
findFn("area polygon compute") 
library(splancs) 
with(clines[[9]],areapl(cbind(x,y))) 

rahatlatıcı @DWin aynı cevabı, alır ... tekrarlanabilir örneğin ve sos (benim favori R paket!) Ve splancs yazarlara @DWin için. (Muhtemelen aynı algoritmadır, ancak splancs paketindeki bir Fortran rutininde uygulanmıştır ...)

+2

Sadece "yardım (contourlInes)" sayfasına gittiğimden çok fazla kredi almam ve buradaki örneği aldım. @BurtonGuster, Ben'e onay işareti vermekten çekinmeli. Muhtemelen buraya yazdığı tüm iyi çalışmalar ve R-help e-posta listesinde Ben'e birkaç bin puan bağışlamalıyım. Aynı şekilde Hadley ve Gabor Grothendeick –

+0

@DWin – Andrie

+0

@DWin ve Ben ile aynı fikirdeyim: Yardımınız için teşekkürler! –

6

ContourLines tarafından döndürülen bir nesneyle çalıştığınızı varsayacağım. (Her seviyede x ve y bileşenleriyle adlandırılmamış bir liste.) Bu, erişimi kolay bir yerde bulmayı bekliyordu, ancak bunun yerine, http://finzi.psych.upenn.edu/R/library/PBSmapping/doc/PBSmapping-UG.pdf'u görerek hatırladığım bir algoritma sağlayan bir pdf dosyası buldu (Bkz. Pdf sayfa 19, etiketli). -11- ") (Eklenen not: Wikipedia makale "çokgen" Haritacılar Formula Bu tartışmayı değinir: http://www.maa.org/pubs/Calc_articles/ma063.pdf, abs (benim kullanımını haklı).)

bir örnek oluşturma:

x <- 10*1:nrow(volcano) 
y <- 10*1:ncol(volcano) 
contour(x, y, volcano); 
clines <- contourLines(x, y, volcano) 
x <- clines[[9]][["x"]] 
y <- clines[[9]][["y"]] 
level <- clines[[9]][["level"]] 
level 
#[1] 130 

= 130 alan düzeyinde (iki 130 seviyesi olmadığından ve arsa sınırlarından hiçbiri karşılanmadığından seçildiği için) şu durumda:

A = 0.5* abs(sum(x[1:(length(x)-1)]*y[2:length(x)] - y[1:(length(x)-1)]*x[2:length(x)])) 
A 
#[1] 233542.1 
İlgili konular