2012-12-12 35 views
0

我不与GGPLOT2包的专家。我有一个子集选择问题。ggplot功能选择多个子集

这里是我的代码,生产这种图形的...

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

现在我想截止添加到我的子集...仅显示具有最小数的变量。

所以,如果我把截止= 4 ......我会只对有7个计数底部的工具栏,不应该出现在顶配3个计数吧。

我不知道我怎么可以这样...... 感谢您的帮助。

+3

您能否提供一些样本数据? – nassimhddd

+4

此外,我建议让你的例子更小一点。许多标题,轴标签和其他主题都偏离了实际问题。 –

+0

您需要更多才能使其成为可重复的示例。 var.y'和'main.str'在哪里? –

回答

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