这个怎么样。我将数字变量名称更改为 number 以使其更易于使用。
# load the data
dados <- structure(list(Tratamento = c("Controle", "Controle", "Controle",
"Controle", "Controle", "Controle", "IMD Princ\xedpio Ativo",
"IMD Princ\xedpio Ativo", "IMD Princ\xedpio Ativo", "IMD Princ\xedpio Ativo",
"IMD Princ\xedpio Ativo", "IMD Princ\xedpio Ativo", "IMD Comercial",
"IMD Comercial", "IMD Comercial", "IMD Comercial", "IMD Comercial",
"IMD Comercial", "Controle", "Controle", "Controle", "Controle",
"Controle", "Controle", "IMD Princ\xedpio Ativo", "IMD Princ\xedpio Ativo",
"IMD Princ\xedpio Ativo", "IMD Princ\xedpio Ativo", "IMD Princ\xedpio Ativo",
"IMD Princ\xedpio Ativo", "IMD Comercial", "IMD Comercial", "IMD Comercial",
"IMD Comercial", "IMD Comercial", "IMD Comercial"), number = c(24477,
33825, 24225, 15736, 21058, 21508, 23038, 28528, 38876, 35282,
2466, 271, 18289, 15286, 23326, 18198, 19957, 22898, 9541, 12495,
9672, 9723, 11265, 7627, 10617, 8553, 8483, 8071, 11029, 9408,
10346, 13249, 9723, 11546, 9408, 9541), Var2 = c("Larva", "Larva",
"Larva", "Larva", "Larva", "Larva", "Larva", "Larva", "Larva",
"Larva", "Larva", "Larva", "Larva", "Larva", "Larva", "Larva",
"Larva", "Larva", "Pupa", "Pupa", "Pupa", "Pupa", "Pupa", "Pupa",
"Pupa", "Pupa", "Pupa", "Pupa", "Pupa", "Pupa", "Pupa", "Pupa",
"Pupa", "Pupa", "Pupa", "Pupa")), row.names = c(NA, -36L), class = "data.frame")
library(ggplot2)
library(grid)
# aggregate to get the mean
gap3 <- aggregate(number ~ Var2 + Tratamento, data=dados, FUN=mean)
# calculate proportions of the mean numbers
gap3 <- gap3 %>%
group_by(Var2) %>%
mutate(prop = number/sum(number))
# Make the main plot
g1 <- ggplot(gap3, aes(x = Var2, y = number, fill = as.factor(Tratamento))) +
geom_col(position = "stack") +
theme_classic() +
labs(fill="Tratamento", x="",
y="Number of Caste-biased Genes") +
theme(legend.position="top",
axis.text.x = element_text(angle = 45, hjust=1))
# make the inset plot
g2 <- ggplot(gap3, aes(x=Var2, y=prop, fill=as.factor(Tratamento))) +
geom_col(position="stack", show.legend=FALSE) +
theme_classic() +
theme(axis.title.x=element_blank(),
axis.text.x=element_blank(),
axis.ticks.x=element_blank()) +
labs(x="", y="Proportion")
# put them together
g1 + annotation_custom(ggplotGrob(g2), xmin=1.5, xmax=2.5, ymin=35000, ymax=60000)