如何计算ggradar中的多边形面积

时间:2020-10-26 18:12:45

标签: r radar-chart spider-chart

我希望使用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')

radar chart using mtcars

那么,我的问题是如何自动计算每个三角形的面积并将它们相加。有关如何执行此操作的任何建议?预先感谢。

1 个答案:

答案 0 :(得分:0)

当我质疑实用程序时,肯定可以在R中执行此操作。这是一个函数

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处,但在示例图中,只要雷达图未将0放置在图像的精确中心即可。似乎有抵消。如有必要,可以将偏移量的长度添加到三角形的长度中。

相关问题