polygon関数で正方形を塗りつぶす

実は、RでK近傍法を用いたクラス分類をするためのコードを書いてみた - yasuhisa's blogのやつは小さな正方形に区間をくぎって、そこでぬりつぶす、という作業をやっています。Rでぬりつぶし、といったらpolygon関数なんですが、あんまり使い方覚えてないので、書いておく。

下の例だと1から10までの平面を考えて、x*yが20を越えてるところをぬりつぶすというのをやっています(整数限定で)。ぬりつぶすために、左下、右下、右上、左上という順番で動いているのがポイントです。

plot(1:10,1:10,type="n")
s <- seq(1,10,length.out=10)
for(i in s){
  for(j in s){
    if(i*j > 20){
      polygon(c(i,i+1,i+1,i),c(j,j,j+1,j+1), xpd=FALSE, col = "orange", lty=0)
    }
  }
}

f:id:syou6162:20161103182051p:plain