ggplot Box并排绘制

问题描述 投票:0回答:2

我想按媒体类型并排绘制框图(总数和ELISA)。我在其他聊天中看到我需要融化数据。当我这样做时,我得到以下内容

错误:stat_boxplot需要以下缺失的美学:y

我的数据:

media    total    ELISA  
surface     1.3     2.7
surface     5.2     6.5
surface     0.9     2.9
surface     0.7     2.1
porewater   376.8   651.0
porewater   288.7   308.0
porewater   32.3    63.3
porewater   69.7    184.0
porewater   116.0   11.4
porewater   31.6    51.5
porewater   38.6    97.5
porewater   63.2    152.0
porewater   118.0   254.0
porewater   1147.5  4174.0
porewater   626.6   798.0
porewater   39.2    81.8
porewater   3.3     7.5
porewater   70.3    231.5
porewater   1.7     3.2
sediment    567.0   1454.1
sediment    24.0    70.7
sediment    13.7    23.9
sediment    16.9    105.7
sediment    39.7    5.9
sediment    8.2     17.6
sediment    27.4    85.0
sediment    14.7    30.8

我的代码:

library(reshape2)
elisa.m <- melt(elisa, media.vars='media', measure.vars=c('total','ELISA'))

library(ggplot2)
p <- ggplot(elisa.m) +
  geom_boxplot(aes(x = media, y=value)) + 
  stat_boxplot(geom = "errorbar", width = 0.5)

我不确定为什么这不起作用。我应该将其命名为除了价值以外的东西吗?

r ggplot2 boxplot
2个回答
0
投票

您的映射aes()应该在ggplot()内,以便stat_boxplot继承它。因此,

  p <- ggplot(elisa.m, aes(x = media, y = value)) +
  geom_boxplot() + 
  stat_boxplot(geom = "errorbar", width = 0.5)

0
投票
myplot = ggplot(elisa.m, aes(x=media, y=measurement))+
          geom_boxplot()+
          stat_boxplot(geom ='errorbar', width=0.5) +  
          facet_rep_wrap(~mode, repeat.tick.labels=TRUE)

但是,要使其正常工作,您必须重新组织数据,以便具有以下格式:

media   measurement  mode
surface    1.3       total
  .                  total
  .                  total
surface    2.7       elisa
  .                  elisa
  .                  elisa

希望它有帮助:) Ana

© www.soinside.com 2019 - 2024. All rights reserved.