ライブラリsp
にggplot2の穴があるSpatialPolygons
を描画します。
http://stackoverflow.com/questions/12047643/geom-polygon-with-multiple-hole/12051278#12051278
実際 broom::tidy
を使用してSpatialPolygons
を変換する際に、(ggplot2::fortify
を置き換える)、穴のポリゴンが時計回りに保存されているとして描画する:StackOverflowの上の他の人の質問に おかげで、私は時計回りに書かれたポリゴンを扱う一方で、これが許可されていることを知っています穴。
ggplot2では、穴があるポリゴンを強制的に描画して、fill
を使用して一度描画し、もう一度colour
を使用して描画します。そうしないと、ポリゴンと交差する線が表示されることがあります。 複数のサブポリゴンを扱う場合、穴があるものもありますが、これはより難しく、broom::tidy
で定義されている点のフィーチャの順番でポリゴンを塗りつぶすことはできません(下の画像を参照)。
あなたはこの充填問題の問題を解決するための解決策をお持ちですか?ここでggplot2を使用して複数のサブポリゴンと穴を持つ空間ポリゴンを描画する
は再現例です。
library(sp)
library(ggplot2)
# Create two polygons: second would be a hole inside the first
xy = cbind(
x = c(13.4, 13.4, 13.6, 13.6, 13.4),
y = c(48.9, 49, 49, 48.9, 48.9)
)
hole.xy <- cbind(
x = c(13.5, 13.5, 13.45, 13.45, 13.5),
y = c(48.98, 48.92, 48.92, 48.98, 48.98)
)
# Transform as SpatialPolygons with holes
xy.sp <- SpatialPolygons(list(
Polygons(list(Polygon(xy),
Polygon(hole.xy, hole = TRUE)), "1"),
Polygons(list(Polygon(xy + 0.2),
Polygon(xy + 0.35),
Polygon(hole.xy + 0.2, hole = TRUE)), "2")
))
# Transform SpatialObject to be used by ggplot2
xy.sp.l <- broom::tidy(xy.sp)
ggplot(xy.sp.l) +
geom_polygon(aes(x = long, y = lat, group = id, fill = id))
一つの解決策は、SpatialPolygons関数呼び出しでポリゴンを分離伴うだろう。例えばid = 2の2つのポリゴンは2aと2bになります。これは可能でしょうか、それともxy.sp.lからの解決策を探していますか? –