突出显示ggplot2 barplot中满足条件的区域

时间:2017-07-25 12:53:46

标签: r ggplot2

我想使用ggplot2绘制水平条形图,并突出显示满足特定条件的区域。

在这种情况下,如果点“E15.5-E18.5_up_down”的任何“Term”与点“P22-P29_up_down”相比具有两倍以上的样本,反之亦然,则突出显示该标签或区域。

我有以下格式的数据框:

CLID    CLSZ    GOID    NodeSize    SampleMatch Phyper  Padj    Term    Ont SampleKeys
E15.5-E18.5_up_down 1364    GO:0007568  289 20  0.141830716154421   1   aging   BP  ENSMUSG00000049932 ENSMUSG00000046352 ENSMUSG00000078249 ENSMUSG00000039428 ENSMUSG00000014030 ENSMUSG00000039323 ENSMUSG00000026185 ENSMUSG00000027513 ENSMUSG00000023224 ENSMUSG00000037411 ENSMUSG00000020429 ENSMUSG00000020897 ENSMUSG00000025486 ENSMUSG00000021477 ENSMUSG00000019987 ENSMUSG00000023067 ENSMUSG00000031980 ENSMUSG00000023070 ENSMUSG00000025747 ENSMUSG00000079017
E15.5-E18.5_up_down 1364    GO:0006397  416 3   0.999999969537913   1   mRNA processing BP  ENSMUSG00000027510 ENSMUSG00000021210 ENSMUSG00000027951
P22-P29_up_down 476 GO:0007568  289 11  0.0333771791166823  1   aging   BP  ENSMUSG00000049932 ENSMUSG00000037664 ENSMUSG00000026879 ENSMUSG00000026185 ENSMUSG00000026043 ENSMUSG00000060600 ENSMUSG00000022508 ENSMUSG00000020897 ENSMUSG00000028702 ENSMUSG00000030562 ENSMUSG00000021670
P22-P29_up_down 476 GO:0006397  416 2   0.998137879564768   1   mRNA processing BP  ENSMUSG00000024007 ENSMUSG00000039878

缩小为(仅限绘图所需的那些术语):

CLID    SampleMatch Term
E15.5-E18.5_up_down 20  aging
P22-P29_up_down 2   mRNA processing
E15.5-E18.5_up_down 3   mRNA processing
P22-P29_up_down 11  aging

我更喜欢一种适用于任何条件的通用方法,而不仅仅是我需要的方案。我想象的一种方法是为每对CLID / Term使用sapply并创建另一列,如果条件符合布尔值,则存储,但我仍然无法找到突出显示值的方法。实现这一目标的最有效方法是什么?

我的方法的伪代码:

for(i in CLID) {
    for(k in CLID) {
        if (Term[i] == Term[k]) {
            condition = check(Term[i], Term[k]) #check if the SampleMatch count for any for any CLID/Term pair is significantly higher compared to corresponding CLID/Term pair
            if (condition == True) {
                highlight(term)
                }
            }
        }
    }

最后我想要这样的东西(突出显示标签或列): enter image description here

或者像这样:Highlight data individually with facet_grid in R

0 个答案:

没有答案