【问题标题】:Bar chart ggplot2 problems条形图ggplot2问题
【发布时间】:2021-01-17 15:14:28
【问题描述】:

我正在尝试使用 ggplot2 函数运行条形图。 我想组织图表的方式如下: X轴显示“幼虫”和“蛹”,Y轴显示“幼虫”和“蛹”类别中的3个处理。

下面是我想重现的示例,但仅考虑前两个变量“larva”和“pupa”。

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

我该如何解决?

【问题讨论】:

    标签: r ggplot2 graphics statistics data-analysis


    【解决方案1】:

    这个怎么样。我将数字变量名称更改为 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)
    

    【讨论】:

      猜你喜欢
      • 2016-06-29
      • 2021-02-26
      • 2014-04-20
      • 2015-01-03
      • 2021-03-14
      • 1970-01-01
      • 1970-01-01
      • 2019-01-14
      • 2018-09-15
      相关资源
      最近更新 更多