0
有誰知道如何從R的car:::dataEllipse
函數中提取中心座標,主軸和副軸?我正在使用這個函數在一個XY散點圖上疊加一個橢圓。如何從R的dataEllipse函數中提取軸
有誰知道如何從R的car:::dataEllipse
函數中提取中心座標,主軸和副軸?我正在使用這個函數在一個XY散點圖上疊加一個橢圓。如何從R的dataEllipse函數中提取軸
看起來像這樣會有用的信息,但由於某些原因,它需要一些額外的工作。
基於源代碼和robust
參數的描述,該中心使用的是從統計包或者MASS:::cov.trob
或cov.wt
計算:
tmp <- dataEllipse(Duncan$income, Duncan$education, levels=0.1*1:9,
ellipse.label=0.1*1:9, lty=2, fill=TRUE, fill.alpha=0.1)
MASS:::cov.trob(tmp[[1]])$center
# x y
# 42.08207 52.91766
stats::cov.wt(tmp[[1]])$center
# x y
# 42.02314 52.81859
您還需要使用任何weights
如果你使用的在dataEllipse
。所以,你可以寫一個簡單的函數來得到每個橢圓所有中心:
get_centers <- function(de, robust = FALSE) {
if (robust)
l <- lapply(seq_along(de), function(x) MASS:::cov.trob(tmp[[x]])$center)
else l <- lapply(seq_along(de), function(x) stats::cov.wt(tmp[[x]])$center)
do.call('rbind', l)
}
(cent <- get_centers(tmp))
# x y
# [1,] 42.02314 52.81859
# [2,] 42.09468 52.93887
# [3,] 42.15538 53.04091
# [4,] 42.21279 53.13742
# [5,] 42.27070 53.23476
# [6,] 42.33239 53.33846
# [7,] 42.40228 53.45595
# [8,] 42.48882 53.60144
# [9,] 42.61681 53.81659
dataEllipse(Duncan$income, Duncan$education, levels=0.1*1:9,
ellipse.label=0.1*1:9, lty=2, fill=TRUE, fill.alpha=0.1)
points(cent[1, 1], cent[1, 2], pch = 4, cex = 2)
它看起來稍微斷點的中心,但我不知道爲什麼。我不知道你的意思是通過提取主軸和副軸。
我認爲這是關閉的,因爲dataEllipse
返回標籤的橢圓的結果,在本例中它起始於.1而不是中心橢圓,所以標記的中心點將是.1橢圓而不是中心橢圓。但這只是一個猜測。