Я привык использовать ggplot2, поэтому я использовал только fct_inorder() для изменения порядка осей. Это должен быть Gate 0–3, затем Full. Как вы делаете это с базовой функцией, такой как тепловая карта? df и код ниже. Благодарю вас!
Wizard_heatmap <- structure(list(Response = c("LIZARD", "LIZARD", "LIZARD", "NR",
"NR", "WAITER", "WEEKEND", "WHALE", "WHEELCHAIR", "WHIP", "WHISKEY",
"WHISTLE", "WHISTLE", "WHISTLE", "WIND", "WINDMILL", "WINDOW",
"WINDOW", "WINTER", "WISDOM", "WISDOM", "WIZARD", "WIZARD", "WIZARD",
"WIZARD", "WOMEN", "WOOD", "WOODCHIP"),
Target = c("WIZARD","WIZARD", "WIZARD", "WIZARD", "WIZARD", "WIZARD", "WIZARD",
"WIZARD", "WIZARD", "WIZARD", "WIZARD", "WIZARD", "WIZARD", "WIZARD", "WIZARD",
"WIZARD", "WIZARD", "WIZARD", "WIZARD", "WIZARD", "WIZARD", "WIZARD",
"WIZARD", "WIZARD", "WIZARD", "WIZARD", "WIZARD", "WIZARD"),
Gate = c("Full", "Gate 2", "Gate 3", "Gate 0", "Gate 1",
"Gate 0", "Gate 1", "Gate 0", "Gate 0", "Gate 0", "Gate 1",
"Gate 0", "Gate 1", "Gate 2", "Gate 0", "Gate 0", "Gate 0",
"Gate 1", "Gate 0", "Gate 1", "Gate 2", "Full", "Gate 1",
"Gate 2", "Gate 3", "Gate 0", "Gate 0", "Gate 0"),
n = c(1, 2, 2, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 1, 7,
1, 15, 1, 12, 14, 1, 1, 1)), row.names = c(NA, -28L), class = c("tbl_df", "tbl", "data.frame"))
heatmap(with(Wizard_heatmap, as.matrix(table(factor(Response), factor(Gate)))))
Интересно, учитывая ваши данные, вас не интересует дендрограмма и вы просто ищете стандартную тепловую карту? Если да, то, возможно, использование ggplot
даст вам необходимый контроль?
m <- with(Wizard_heatmap, as.matrix(table(factor(Response), factor(Gate))))
for(i in seq(nrow(Wizard_heatmap))) {
m[Wizard_heatmap$Response[i], Wizard_heatmap$Gate[i]] <- Wizard_heatmap$n[i]
}
df <- setNames(as.data.frame(as.table(m)), c("Response", "Gate", "n"))
library(ggplot2)
ggplot(df, aes(Gate, Response, fill = n)) +
geom_tile(color = "gray") +
theme_minimal() +
scale_fill_gradientn(colours = c("red4", "red", "orange", "yellow", "white"))