r-如何在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')

使用mtcars 的雷达图

因此,我的问题是如何自动计算每个三角形的面积,并将它们相加。有什么建议吗?提前谢谢。

当我质疑实用程序时,在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放在图像的确切中心。似乎有偏移。如果需要,可以将该偏移的长度添加到三角形长度中。

相关内容

  • 没有找到相关文章

最新更新