0

次のようなデータフレームがあります。

structure(list(A = c(10, 10, 10, 10, 10, 10), T = c(0.1, 0.2, 
0.3, 0.4, 0.5, 0.6), X = c(673.05, 672.3, 672.3, 672.3, 667.82, 
667.82), Y = c(203.93, 203.93, 203.93, 203.93, 209.16, 209.16
), V = c(14.79, 14.94, 0, 12.677, 14.94, 14.94)), .Names = c("A", 
"T", "X", "Y", "V"), row.names = c(NA, 6L), class = "data.frame")

簡単に言うと、私のデータは特定のオブジェクト (A) の x、y 位置です。3 つの同心リング上の特定の位置 (X、Y) で特定の時間 (T) のデータをサブセット化したいと考えています。inpipパッケージの関数を使用して多角形で実行できることを読みましたsplancsが、円は多角形ではありません。:( 時間を使用したサブセット化は簡単ですが、領域についてはわかりません。

関数を使用して座標でデータをサブセット化しようとしましたsubsetが、座標も円ではなく多角形になります。私ができた唯一のことは、次を使用して同心円を描くことです。

plot(0,0,type = "n", xlim = c(0,957), ylim = c(0,765))
my.shape=draw.circle (455,351,seq(112,336, 112))

だから、どんな助けも素晴らしいでしょう。

4

1 に答える 1

1

円を描いているときに、x 座標空間と y 座標空間の中心点からの距離をマークするつもりであると想定しています。その場合、次のコードは、データ フレームの各行に、それが属する同心円を示すグループ識別子を割り当てます。

library(plotrix)
library(MASS)

# create fake data
df <- data.frame(X=runif(1000, 0, 1000), Y=runif(1000, 0, 600))

# define the center and radii of the circles
center <- c(455, 351)
radii <- seq(112, 336, 112)

# calculate the distance to the center for each row of object df
distcenter <- apply(df[, c("X", "Y")], 1, function(rowi) dist(rbind(rowi, center)))
# assign each row of object df to a group based on distcenter
group <- cut(distcenter, c(-1, radii, 2*max(radii)), labels=FALSE)

# to ensure that circles are drawn in x,y coordinate space, you need to use the eqscplot() function from package MASS
eqscplot(0, 0, type="n", xlim=range(df$X, center[1]+c(-1, 1)*max(radii)), ylim=range(df$Y, center[2]+c(-1, 1)*max(radii)))
draw.circle(center[1], center[2], radii)
points(df$X, df$Y, col=group)

# to subset all of the rows of a given group, you can use something like this
df[group==2, ]

そうでない場合... x 軸と y 軸が同じようにスケーリングされていない場合でも、円を円のように見せたいdraw.circle()場合は、均等にスケーリングされていないプロットに追加するとどうなりますか?その場合、このソリューションではうまくいきません。

于 2013-11-07T13:25:10.120 に答える