ggplot函数选择多个子集

时间:2012-12-12 21:02:53

标签: r subset ggplot2

我不是ggplot2包的专家。我有一个子集选择问题。

这是我生成此类图表的代码......

  g <- ggplot(merged_data,aes_string(x=Order,fill=var.y)) + 
               scale_y_continuous(expand = c(0.05,0)) + 
              xlab(paste("Order","Total number of sequences",sep=" - ")) + 
              ggtitle(main.str) +
              geom_bar(position="fill", 
                       subset = .(Order !=  ""), 
                       width=0.6,hjust =0)+
              geom_text(stat="bin",  
                        subset = .(Order !=  ""), 
                        color="black", hjust=1, vjust = 0.5, size=2,
              aes_string(fill=NULL,x = Order,y = "0", label="..count.."))+
              coord_flip()

对于geom_bargeom_text,我选择删除空名称的数据子集

subset = .(eval(parse(text=var.x)) !=  "")

这是一个只有2个小节的简单示例。 这是一个数据...

Collector<- c("BK","YE_LD","BK","JB","JB",
         "BK","BK","BK","JB","YE_LD")
Order<-c("A","B","B","B","A",
         "B","B","A","B","B")
data <- data.frame(Order,Collector)

enter image description here

现在我想在我的子集中添加一个截止值...仅显示具有最少计数的变量。

所以,如果我把cutoff = 4 ...我只会得到底部有7个计数的栏,顶部的栏有3个计数不应该出现。

我不知道我怎么能这样做...... 谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

您可以创建数据的子集,并在ggplot中使用此新对象。以下命令将删除少于四个数据点的所有Order条件:

subset(data, Order %in% names(which(table(Order) >= 4)))


   Order Collector
2      B     YE_LD
3      B        BK
4      B        JB
6      B        BK
7      B        BK
9      B        JB
10     B     YE_LD