1
三角形の色付きの四角形があります。 今、ポリゴンにこのノイズをクリスマスの「クッキーカッター」のようにカットしたいと思っています。ポリゴンパスで囲まれた三角形のノイズが発生します。ポリゴンの外側にあるものをすべて切り取ったり、外側を白く塗りつぶしたりします。
ポリゴンの境界線に重なるすべてのピクセルをクリップし、pdfとして保存するにはどうすればよいですか?
I 2つのアイデアを思い付いた:画素(有色ノイズ)状にか下がるかどうかをテストする関数を使用方法1
- 。やってみましょう!
問題:境界線ピクセルのエッジがラインから外れます。この例では非常に最小です。あなたはポリゴンラインを少し大きくすることを主張することができます。 - 方法2ポリゴンシェイプを反転して(ポリゴンの外側に塗りつぶす)、白で塗りつぶします。
問題: プロットプレビューウィンドウで、結果は私が望むように見えます。 PDFとして保存すると、すべての結果が黒のポリゴンの形をした白になります。
再現例:
library(magrittr)
library(ggplot2)
library(SDMTools)
polyGony <- c(0,0,100,50,50,100) %>% matrix(ncol=2,byrow = T) %>% as.data.frame()
deltaN <- 200 #grid width
sp1<-seq(1,100,length=deltaN)
sp2<-seq(1,100,length=deltaN)
sp<-expand.grid(x=sp1,y=sp2)
set.seed(1337)
sp$z <- sample(1:30,nrow(sp),replace = T)
# Method 1
outin = SDMTools::pnt.in.poly(sp[,1:2],polyGony)
outin$z <- sp$z
pointsInsideTri <- outin[outin$pip==1,-3]
p <- ggplot(pointsInsideTri, aes(x, y)) +
geom_raster(aes(fill = z)) +
scale_fill_gradientn(colours=c("#FFCd94", "#FF69B4", "#FF0000","#4C0000","#000000"))
p + geom_polygon(data = polyGony, aes(V1,V2),color="black", fill=NA) + theme(aspect.ratio = 1)
# Method 2
outSQ <-c(0,0,100,0,100,100,0,100)
invPolyGony <- c(outSQ,0,0,100,50,50,100) %>% matrix(ncol=2,byrow = T) %>% as.data.frame()
p <- ggplot(sp, aes(x, y)) +
geom_raster(aes(fill = z)) +
scale_fill_gradientn(colours=c("#FFCd94", "#FF69B4", "#FF0000","#4C0000","#000000"))
p + geom_polygon(data = invPolyGony, aes(V1,V2) ,colour="black", fill="white") + theme(aspect.ratio = 1)
あなたの唯一の問題はありますか?私にはあなたが探しているものは明確ではありません。 – Christoph
ピクセルベースのイメージをポリゴンパスで囲みたい。ピクセルはポリゴンの境界線から「ラップ」しないでください。それから私はそれをpdfファイルに保存します。 –
私が理解するところでは、あなたの話は誤解を招く(または間違っている)。あなたは何をしたいのか、どの方法を使いたいのかを知っています。あなたの問題は、pdfとして結果を保存する方法だけです。 – Christoph