Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带或不带ggplot2的分面分组箱线图r_R_Ggplot2_Facet Wrap - Fatal编程技术网

带或不带ggplot2的分面分组箱线图r

带或不带ggplot2的分面分组箱线图r,r,ggplot2,facet-wrap,R,Ggplot2,Facet Wrap,我在10个阶段或几个月内做了一系列实验。我正在培养3种不同类型的细菌,并计算生长(ACC) 我试图得到三种细菌类型(a、E和H)在不同阶段生长的分组箱线图。我的数据: head(EAH) ACC sample site bed phase X.M.SA TYPE 1 SG A 1 0 1 NO E 2 SG A 2 0 1 NO A 3 MG A 3 0 1 NO

我在10个阶段或几个月内做了一系列实验。我正在培养3种不同类型的细菌,并计算生长(ACC)

我试图得到三种细菌类型(a、E和H)在不同阶段生长的分组箱线图。我的数据:

head(EAH)
  ACC sample site bed phase X.M.SA TYPE
1  SG      A    1   0     1     NO    E
2  SG      A    2   0     1     NO    A
3  MG      A    3   0     1     NO    H
4  SG      A    4   0     1     NO    A
5  LG      A    1   0     2     NO    E
6  LG      A    2   0     2     NO    H
由于某些原因,某些代表性数据不起作用:

EAH<- data.frame(ACC=factor(sample(1:5,10,replace=T), label=c("NG","SG","LG","MG","GH")), 
                 Phase=factor(seq(1,10,1)),
                 TYPE=factor(sample(1:3,10,replace=T), label=c("A","E","S"),replace=T))
以下是我到目前为止所做的工作,但无法实现:

这篇文章下面的第三张图表看起来不错:

编辑

新代码很接近,但我不得不将ACC更改为数字。我能把y轴上的标签恢复为NG、SG、LG、MG、HG吗

ggplot(EAH, aes(x=TYPE, y=as.numeric(ACC))) + 
  geom_boxplot(aes(fill=TYPE))+ facet_grid(. ~ phase)

最终代码:

library(RColorBrewer)
library(ggplot2)
ggplot(EAH, aes(x=TYPE, y=as.numeric(ACC))) + 
  geom_boxplot(aes(fill=TYPE))+ 
  facet_grid(. ~ phase) +
 labs(x = "Phase", y = "Growth",color="Type" )+
 scale_fill_brewer(palette="Blues")+
 theme_bw()+
 theme(strip.background=element_rect(fill="black"))+
 theme(strip.text=element_text(color="white", face="bold"))+
scale_y_discrete(breaks=c("1", "2", "3","4","5"),
                   labels=c("NG", "SG", "LG","MG","HG"))
结果:

ggplot2使用非标准评估。它在传递给其
data
参数的data.frame中查找变量。因此,您可以简单地执行以下操作:

ggplot(EAH, aes(x=Phase, y=ACC)) + 
  geom_boxplot(aes(fill=TYPE))+ facet_grid(. ~ Phase)

当然,R是区分大小写的。

这是常见问题解答。您已经告诉ggplot2在哪里查找变量。不要使用EAH$!谢谢你看这个。我尝试了至少10种不同的ggplot代码,大部分来自stackoverflow,但没有一种适合我。我无法理解这个错误的含义:布局库中的错误(data,cols,drop=drop):至少一个层必须包含用于镶嵌面的所有变量。还有为什么我不应该使用EAH$!?非常感谢你的例子,我真的很感激。我把它改为:ggplot(EAH,aes(x=TYPE,y=as.numeric(ACC))+geom_盒形图(aes(fill=TYPE))+facet_网格(.~phase),它给出了正确的分割,但由于我必须使ACC为数值,我看不到yaxis上的级别(见我在帖子中的编辑)。你认为呢?箱线图必须有数字y轴(并且必须基于数字值)。你展示的不是箱线图。事实上,我无法理解您的绘图。R将增长水平(无增长、少量增长等)转换为数值1、2、3等来绘图。箱线图显示此类数据的方式是否错误?基本上我这里有一个有序的分类y轴…箱线图是连续数据的。你没有这个,因此箱线图对你来说是错误的工具。
ggplot(EAH, aes(x=Phase, y=ACC)) + 
  geom_boxplot(aes(fill=TYPE))+ facet_grid(. ~ Phase)