_ggplot2
_の最新バージョンでは、_?fortify
_は以下を返します。
説明
この関数を使用するのではなく、より幅広いメソッドを実装するbroomパッケージを使用することをお勧めします。
fortify
は将来廃止される可能性があります。
broom
パッケージは確かに多くの代替案を提供します(augment
など)。どれをどのような状況で使用すべきですか?
私は特にfortify(spdf)
の代わりに興味があります。ここでspdf
はSpatialPolygonsDataFrameです。
これが私が主題に近づいた方法です。
「ほうきクラン」を検索すると、CRANの対応するパッケージのページにリダイレクトされました。それはいくつかのビネットを提供するので、私はチェックアウトしましたほうきの紹介。 「spatial」に一致する文字列が見つからなかった後、PDFを閉じて リファレンスマニュアル を開きました。「spatial」を検索すると、最初のヒットで7件のヒットがありましたsp_tidiersに関するトピックです。関数tidy
は、空間オブジェクトをdata.frameに変換するためにアドバタイズされています。試してみましょう。
library(sp)
Sr1 = Polygon(cbind(c(2,4,4,1,2),c(2,3,5,4,2)))
Sr2 = Polygon(cbind(c(5,4,2,5),c(2,3,2,2)))
Sr3 = Polygon(cbind(c(4,4,5,10,4),c(5,3,2,5,5)))
Sr4 = Polygon(cbind(c(5,6,6,5,5),c(4,4,3,3,4)), hole = TRUE)
Srs1 = Polygons(list(Sr1), "s1")
Srs2 = Polygons(list(Sr2), "s2")
Srs3 = Polygons(list(Sr3, Sr4), "s3/4")
x = SpatialPolygons(list(Srs1,Srs2,Srs3), 1:3)
library(broom)
tidy(x)
long lat order hole piece group id
1 2 2 1 FALSE 1 s1.1 s1
2 1 4 2 FALSE 1 s1.1 s1
3 4 5 3 FALSE 1 s1.1 s1
4 4 3 4 FALSE 1 s1.1 s1
5 2 2 5 FALSE 1 s1.1 s1
6 5 2 1 FALSE 1 s2.1 s2
7 2 2 2 FALSE 1 s2.1 s2
8 4 3 3 FALSE 1 s2.1 s2
9 5 2 4 FALSE 1 s2.1 s2
10 4 5 1 FALSE 1 s3/4.1 s3/4
11 10 5 2 FALSE 1 s3/4.1 s3/4
12 5 2 3 FALSE 1 s3/4.1 s3/4
13 4 3 4 FALSE 1 s3/4.1 s3/4
14 4 5 5 FALSE 1 s3/4.1 s3/4
15 5 4 6 TRUE 2 s3/4.2 s3/4
16 5 3 7 TRUE 2 s3/4.2 s3/4
17 6 3 8 TRUE 2 s3/4.2 s3/4
18 6 4 9 TRUE 2 s3/4.2 s3/4
19 5 4 10 TRUE 2 s3/4.2 s3/4
これを投稿すると、tidy
バージョンがfortify
バージョンのほぼ複製であることを示すだけです。これは、tidy
ドキュメントでも同じように述べています。
これらの関数は、「フォートファイ」関数としてggplot2パッケージで発生しました。
broom:::tidy.SpatialPolygonsDataFrame
function (x, region = NULL, ...)
{
attr <- as.data.frame(x)
if (is.null(region)) {
coords <- ldply(x@polygons, tidy)
message("Regions defined for each Polygons")
}
else {
cp <- sp::polygons(x)
unioned <- maptools::unionSpatialPolygons(cp, attr[,
region])
coords <- tidy(unioned)
coords$order <- 1:nrow(coords)
}
coords
}
ggplot2:::fortify.SpatialPolygonsDataFrame
function (model, data, region = NULL, ...)
{
attr <- as.data.frame(model)
if (is.null(region)) {
coords <- plyr::ldply(model@polygons, fortify)
message("Regions defined for each Polygons")
}
else {
cp <- sp::polygons(model)
unioned <- maptools::unionSpatialPolygons(cp, attr[,
region])
coords <- fortify(unioned)
coords$order <- 1:nrow(coords)
}
coords
}
tidy
実装(vs fortify
)の微妙な違いにより、生成されたdata.frameのorderに違いが生じるため、nearと言います。列。そのため、fortify
バージョンがより大きな空間オブジェクトに対して行う「低速」のすべての手荷物があり、fortify
が非推奨になるまで(IMO)を切り替える強制的な理由はありません。