ggplot 中的分面网格,R

问题描述

我正在尝试使用 ggplot 绘制分类数据,其中我有两个类别的参数(C 和 C+Fe),我通过 facet-grid 参数。 这是我的代码的一部分:

mediagene<-ggplot(ARG)+
geom_Boxplot(aes(x = gene,y= RA,fill=type))+
ylab("Relative gene abundance\n copies/ 16s rRNA")+
theme_bw()+
facet_grid(parameter~.,switch="y")+
scale_fill_manual(values=cols)+
labs(fill="Saturation")

结果如下: enter image description here

现在我的问题是我如何才能只有顶部图(参数中只有类别 C)

解决方法

正如 stefan 所建议的,使用 dplyr::filter() 只能保留数据中符合特定条件的行。

在这种情况下,您只想保留 parameter'C' 的数据,因此您可以执行以下操作以仅保留此数据:

ARG %>% 
  filter(
    parameter == 'C'
  ) 

然后我们可以将这些数据发送到 ggplot 进行绘图,方法如下:

ARG %>% 
  filter(
    parameter == 'C'
  ) %>% 
  ggplot()+
  geom_boxplot(aes(x = gene,y= RA,fill=type))+
  ylab("Relative gene abundance\n copies/ 16s rRNA")+
  theme_bw()+
  facet_grid(parameter~.,switch="y")+
  scale_fill_manual(values=cols)+
  labs(fill="Saturation")

在这种情况下,您将不再需要使用 facet_grid(),因为无论如何您应该只有一个方面。但是,保留它会给您带有带有 'C' 标签的标题条的同一个框,这可能会很方便。

很遗憾,如果没有您的数据样本,我无法为您展示示例。

,

在不添加额外包的情况下执行此操作的一种方法是使用 subset() 函数,如下所示:

mediagene<-ggplot(subset(ARG,parameter == 'C'))+
geom_boxplot(aes(x = gene,fill=type))+
ylab("Relative gene abundance\n copies/ 16s rRNA")+
theme_bw()+
facet_grid(parameter~.,switch="y")+
scale_fill_manual(values=cols)+
labs(fill="Saturation")