[英]how to calculate area of polygon in ggradar
我希望使用 ggradar 計算多邊形的面積。
從我目前所做的研究來看,我認為目標是計算每個三角形的面積並將它們加在一起。 由於我們知道從質心到每個點的距離以及每個三角形兩側之間的角度,我們可以使用 side1 x side2 x sin(pi/n)/2 計算每個楔形的面積(其中 n = 變量數,在本例中為 4) 並將所有楔形加在一起。
以 mtcars 數據為例:
mtcars_radar <- mtcars %>%
as_tibble(rownames = "group") %>%
mutate_at(vars(-group), rescale) %>%
tail(1) %>%
select(1:5)
ggradar(mtcars_radar)+
theme(legend.position='right')
那么我的問題是如何自動計算每個三角形的面積並將它們加在一起。 關於如何執行此操作的任何建議? 提前致謝。
雖然我質疑實用程序,但肯定可以在 R 中執行此操作。這是一個 function
radar_area <- function(data) {
vals <- data[, -1, drop=FALSE] # assume the first column is the ID
first <- 1:ncol(vals)
second <- c(first[-1], first[1])
Reduce(`+`, Map(function(i, j) vals[,i] * vals[,j], first, second))/2 * sin(2*pi/ncol(vals))
}
radar_area(mtcars_radar)
我們將三角形的所有端點配對,然后我們將它們相乘,然后根據它們之間的角度進行添加和調整。 這假設圓的中心位於 0,0,但在樣本 plot 中,假設雷達 plot 沒有將 0 放在圖像的確切中心。 似乎有抵消。 如有必要,您可以將該偏移量的長度添加到三角形長度中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.