如何解决条形图ggplot2问题
我正在尝试使用ggplot2函数运行条形图。 我要组织图表的方式如下: X轴上出现“幼虫”和“ P”,Y轴上分别显示“ Larva”和“ Pupa”类别中涉及3种处理的值。
下面是我要复制的示例,但是仅考虑了前两个变量“幼虫”和“ pu”。
library(ggplot2)
gap3 <- aggregate(dados$nmol.de.H2O2.consumido.mg.de.PTNA ~ dados$Var2 + dados$Tratamento,data=dados,FUN=mean)
x11()
ggplot(gap3,aes(x = dados$Var2,y = dados$nmol.de.H2O2.consumido.mg.de.PTNA,fill = factor(dados$Tratamento))) +
geom_col(position = "stack")
出现以下错误:
Erro: Aesthetics must be either length 1 or the same as the data (6): x,y and fill
我该如何解决?
解决方法
如何?我将数字变量名称更改为number
,以使其更易于使用。
# load the data
dados <- structure(list(Tratamento = c("Controle","Controle","IMD Princ\xedpio Ativo","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,11546,9541),Var2 = c("Larva","Larva","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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。