В настоящее время мне приходится жестко кодировать метки в пределах scale_x_discrete()
, но мне нужно динамически создавать их подмножество и располагать их в порядке убывания с дополнительными метками, добавляемыми к нижней части оси y со статическими местоположениями.
library(dplyr)
library(ggplot2)
library(scales)
set.seed(1)
samp <- data.frame(Names = sample(paste0("Sample_", 1:5), 90, replace = TRUE),
Mode = rep(c("UN", "CN", "CF"), 150))
ggplot(samp, aes(x=Names)) +
geom_bar(aes(fill=Mode), position="fill", width = .5) +
scale_fill_manual(values = c("#a0de6f","tan1","#DAEBFF")) +
scale_y_continuous(label=percent, expand = c(0,0)) +
coord_flip() +
labs(fill="",
x="",
y="") +
theme_minimal() +
theme(
legend.position = "bottom",
plot.margin = unit(c(1,1,.5,0),"cm"),
legend.key.size = unit(.5, "lines")
) +
guides(fill = guide_legend(reverse = TRUE)) +
scale_x_discrete("",
labels= c(
bquote("Sample_5" * " (n = " * .(sum(samp$Names == "Sample_5")) * ")"),
bquote(italic("Sample_1") * " (n = " * .(sum(samp$Names == "Sample_1")) * ")"),
bquote(italic("Sample_3") * " (n = " * .(sum(samp$Names == "Sample_3")) * ")"),
bquote(italic("Sample_4") * " (n = " * .(sum(samp$Names == "Sample_4")) * ")"),
bquote(italic("Sample_2") * " (n = " * .(sum(samp$Names == "Sample_2")) * ")")))
Этот бит:
scale_x_discrete("",
labels= c(
bquote("Sample_5" * " (n = " * .(sum(samp$Names == "Sample_5")) * ")"),
bquote(italic("Sample_1") * " (n = " * .(sum(samp$Names == "Sample_1")) * ")"),
bquote(italic("Sample_3") * " (n = " * .(sum(samp$Names == "Sample_3")) * ")"),
bquote(italic("Sample_4") * " (n = " * .(sum(samp$Names == "Sample_4")) * ")"),
bquote(italic("Sample_2") * " (n = " * .(sum(samp$Names == "Sample_2")) * ")")))
Это то, что мне нужно, чтобы динамически создаваться и располагаться в порядке убывания по количеству, но я действительно не знаю, как.
Как это должно выглядеть: