@G5W :
library(dplyr)
library(ggplot2)
df <- structure(
list(
V1 = 1:10,
V2 = c(
0.31707317,
0.12195122,
0.09756098,
0.07317073,
0.07317073,
0.07317073,
0.07317073,
0.07317073,
0.04878049,
0.04878049
)
),
.Names = c("V1", "V2"),
class = "data.frame",
row.names = c(NA, -10L))
, dplyr::lead
:
areas <- df %>%
setNames(c("variable", "value")) %>%
mutate(nextval = lead(value, default = value[1]),
angle = (1/10) * (2*pi),
# change 1/n to number of variables
area = value*nextval*sin(angle)/2)
variable value nextval angle area
1 1 0.31707317 0.12195122 0.6283185 0.0113640813
2 2 0.12195122 0.09756098 0.6283185 0.0034966406
3 3 0.09756098 0.07317073 0.6283185 0.0020979843
4 4 0.07317073 0.07317073 0.6283185 0.0015734881
5 5 0.07317073 0.07317073 0.6283185 0.0015734881
6 6 0.07317073 0.07317073 0.6283185 0.0015734881
7 7 0.07317073 0.07317073 0.6283185 0.0015734881
8 8 0.07317073 0.04878049 0.6283185 0.0010489921
9 9 0.04878049 0.04878049 0.6283185 0.0006993281
10 10 0.04878049 0.31707317 0.6283185 0.0045456327
: , default = value[1]
, , NA, , , . , 1/n * 2pi. , , :
areas %>% summarise(total = sum(area))
total
1 0.02954661
.
df <- expand.grid(var = 1:8, grp = c("a", "b")) %>%
mutate(value = runif(length(var), 0.25, 1)) %>%
group_by(grp) %>%
mutate(nextval = lead(value, default = value[1]),
angle = (1/8)*(2*pi),
area = value*nextval*sin(angle)/2) %>%
mutate(total = sum(area))
# A tibble: 16 x 7
# Groups: grp [2]
var grp value nextval angle area total
<int> <fctr> <dbl> <dbl> <dbl> <dbl> <dbl>
1 1 a 0.3101167 0.6831233 0.7853982 0.07489956 0.5689067
2 2 a 0.6831233 0.4166692 0.7853982 0.10063417 0.5689067
3 3 a 0.4166692 0.4756976 0.7853982 0.07007730 0.5689067
4 4 a 0.4756976 0.3426595 0.7853982 0.05763002 0.5689067
5 5 a 0.3426595 0.3107870 0.7853982 0.03765135 0.5689067
6 6 a 0.3107870 0.3001208 0.7853982 0.03297721 0.5689067
7 7 a 0.3001208 0.9039894 0.7853982 0.09592115 0.5689067
8 8 a 0.9039894 0.3101167 0.7853982 0.09911594 0.5689067
9 1 b 0.9888119 0.3481213 0.7853982 0.12170243 1.1749789
10 2 b 0.3481213 0.8513316 0.7853982 0.10478143 1.1749789
11 3 b 0.8513316 0.9928401 0.7853982 0.29883611 1.1749789
12 4 b 0.9928401 0.6372992 0.7853982 0.22370605 1.1749789
13 5 b 0.6372992 0.8303906 0.7853982 0.18710303 1.1749789
14 6 b 0.8303906 0.3607232 0.7853982 0.10590379 1.1749789
15 7 b 0.3607232 0.2786354 0.7853982 0.03553575 1.1749789
16 8 b 0.2786354 0.9888119 0.7853982 0.09741033 1.1749789
df %>%
ggplot(aes(var, value)) +
geom_polygon() +
geom_text(aes(0,0, label = round(total, 2)), color = "white") +
facet_grid(~grp) +
scale_y_continuous("", limits = c(0, 1), expand = c(0,0)) +
scale_x_continuous("", breaks = 1:8, expand = c(0,0)) +
theme_minimal() +
coord_radar()

, ggradar
: http://www.ggplot2-exts.org/ggradar.html
, Erwan Le Pennec:
http://www.cmap.polytechnique.fr/~lepennec/R/Radar/RadarAndParallelPlots.html
coord_radar <- function (theta = "x", start = 0, direction = 1)
{
theta <- match.arg(theta, c("x", "y"))
r <- if (theta == "x")
"y"
else "x"
ggproto("CoordRadar", CoordPolar, theta = theta, r = r, start = start,
direction = sign(direction),
is_linear = function(coord) TRUE)
}