ggplot 中的小平面网格,R

facet-grid in 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, 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")