微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何计算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')

radar chart using 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放置在图像的精确中心即可。似乎有抵消。如有必要,可以将偏移量的长度添加到三角形的长度中。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。