Вот опция ggplot2
, которая делает ваши "5 высоких, 3 широких" простыми с facet
ing:
Во-первых, поддельные данные:
set.seed(42)
n <- 500
Models <- table(
Threshold = sample(c(20, 40, 60, 80, 90), size = n, replace = TRUE),
Outcome = sample(c("Caught", "Deferred", "Successful"), size = n, replace = TRUE),
Model = sample(c("Model_1", "Model_2", "Model_3"), size = n, replace = TRUE)
)
Models
# , , Model = Model_1
# Outcome
# Threshold Caught Deferred Successful
# 20 14 15 14
# 40 7 10 15
# 60 16 13 12
# 80 7 11 4
# 90 16 10 10
# , , Model = Model_2
# Outcome
# Threshold Caught Deferred Successful
# 20 14 11 15
# 40 5 12 10
# 60 11 8 13
# 80 7 15 6
# 90 12 13 11
# , , Model = Model_3
# Outcome
# Threshold Caught Deferred Successful
# 20 14 7 10
# 40 14 13 9
# 60 6 12 13
# 80 20 4 12
# 90 10 8 11
Одна хорошая вещь о что-то, созданное с помощью table
, заключается в том, что as.data.frame
дает нам что-то простое для работы с предпочтением ggplot2
"длинные данные":
head(as.data.frame(Models))
# Threshold Outcome Model Freq
# 1 20 Caught Model_1 14
# 2 40 Caught Model_1 7
# 3 60 Caught Model_1 16
# 4 80 Caught Model_1 7
# 5 90 Caught Model_1 16
# 6 20 Deferred Model_1 15
Сюжет:
library(ggplot2)
ggplot(as.data.frame(Models), aes(Outcome, Freq)) +
geom_bar(stat = "identity") +
facet_grid(Threshold ~ Model)
Примечание: если ваши данные, естественно, array
, а не table
, мы можем легко учесть, что: as.table(ary)
преобразует из array
в table
(что на самом деле является просто массивом внизу):
set.seed(42)
ary <- array(sample(20, size=2*3*3, replace=TRUE), dim = c(2,3,3))
dimnames(ary) <- list(Threshold=c(20,40), Outcome=c("C","D","S"), Model=1:3)
ary
# , , Model = 1
# Outcome
# Threshold C D S
# 20 19 6 13
# 40 19 17 11
# , , Model = 2
# Outcome
# Threshold C D S
# 20 15 14 10
# 40 3 15 15
# , , Model = 3
# Outcome
# Threshold C D S
# 20 19 10 20
# 40 6 19 3
as.table(ary)
### same output as `ary`
head(as.data.frame(as.table(ary)))
# Threshold Outcome Model Freq
# 1 20 C 1 19
# 2 40 C 1 19
# 3 20 D 1 6
# 4 40 D 1 17
# 5 20 S 1 13
# 6 40 S 1 11