Примечание: я изменяю значения вашего примера, чтобы получить больше вариаций, поскольку все ваши значения были между 24 или 25, что объясняет, почему вы получаете почти горизонтальную полосу в своей диаграмме кайта. Я сделал:
df[1:3,1:5] <- sample(5:25, 15, replace = TRUE)
A1 A2 A3 B1 B2
Sphacelaria tribuloides(O) 9 18 20 5 17
Amphiroa rigida (R) 6 18 24 18 18
Stypocaulon scoparium (O) 16 18 16 19 8
Чтобы получить диаграмму воздушного змея, вы можете просто использовать функцию kiteChart
из диаграммы plotrix
.
library(plotrix)
kiteChart(df)
Я не нашел способа повернуть метки y, поскольку кажется, что yaxt = "n"
и las = 1
не работают с этой функцией. Итак, я пытаюсь найти способ, используя ggplot2
.
Возможный способ - сначала сформировать ваш фрейм данных и преобразовать оси y и x в числовой формат, указав уровень их факторного формата. Вам также необходимо нормализовать столбец «значение»:
library(dplyr)
library(tidyr)
DF <- as.data.frame(df) %>% mutate(species = rownames(df)) %>%
pivot_longer(-species, names_to = "X_var", values_to = "values") %>%
mutate(species = factor(species, levels = unique(species))) %>%
mutate(X_var = factor(X_var, levels = unique(X_var))) %>%
mutate(NewY = as.numeric(species)*2) %>%
mutate(normval = values / max(values)) %>%
mutate(NewX = as.numeric(X_var))
# A tibble: 15 x 6
species X_var values NewY normval NewX
<fct> <fct> <dbl> <dbl> <dbl> <dbl>
1 Sphacelaria tribuloides(O) A1 9 2 0.375 1
2 Sphacelaria tribuloides(O) A2 18 2 0.75 2
3 Sphacelaria tribuloides(O) A3 20 2 0.833 3
4 Sphacelaria tribuloides(O) B1 5 2 0.208 4
5 Sphacelaria tribuloides(O) B2 17 2 0.708 5
6 Amphiroa rigida (R) A1 6 4 0.25 1
7 Amphiroa rigida (R) A2 18 4 0.75 2
8 Amphiroa rigida (R) A3 24 4 1 3
9 Amphiroa rigida (R) B1 18 4 0.75 4
10 Amphiroa rigida (R) B2 18 4 0.75 5
11 Stypocaulon scoparium (O) A1 16 6 0.667 1
12 Stypocaulon scoparium (O) A2 18 6 0.75 2
13 Stypocaulon scoparium (O) A3 16 6 0.667 3
14 Stypocaulon scoparium (O) B1 19 6 0.792 4
15 Stypocaulon scoparium (O) B2 8 6 0.333 5
Теперь вы можете использовать geom_ribbon
для получения диаграммы кайта:
library(ggplot2)
ggplot(DF, aes(x = NewX, fill = species))+
geom_ribbon(aes(ymin = NewY-normval, ymax = NewY+normval))+
scale_y_continuous(breaks = unique(DF$NewY), labels = levels(DF$species))+
scale_x_continuous(breaks = unique(DF$NewX), labels = levels(DF$X_var), name = "")
Это то, что вы ищете?