R:使用“识别”在箱图中查找列名

时间:2013-10-01 08:28:54

标签: r plot boxplot

在R中,我从data.frame中绘制了一个相当大的箱线图,大约有150列。我知道有一些“异常”列,其分布与数据集的其他部分差别太大,我想确切地确定哪些。

毫不奇怪,标签没有足够的空间,即使有,也可能不方便手工检查。所以我认为我可以使用R的 identify函数来定位有问题的列。然而,这样的函数需要x和y坐标,到目前为止我无法使其工作。

我试过

boxplot(dd.noctr$TGS, outline=F)
identify(xy.coords(dd.noctr$TGS)$x, y=xy.coords(dd.noctr$TGS)$y)

其中dd.noctr$TGS是我的数据(矩阵或data.frame),只是为了得到错误

warning: no point within 0.25 inches

意味着没有发现任何一点。

是否有其他解决方案来识别列名(而非单点)?

2 个答案:

答案 0 :(得分:1)

这个解决方案看起来有点笨拙,所以可能有更好的解决方案。

  1. 设置一些包含三列的示例数据:

    TGS = data.frame(A = rnorm(100), B = rnorm(100), C=rnorm(100))
    
  2. 接下来绘制箱线图

    boxplot(TGS, outline=F)
    
  3. 现在我们构建identity函数。

    identify(x=rep(1:ncol(TGS), each=nrow(TGS)), 
         y=as.vector(unlist(TGS)), 
         label=rep(colnames(TGS), each=nrow(TGS)))
    

    标签是列名。只有在箱线图的中心附近点击时,此功能才有效。

  4. enter image description here

答案 1 :(得分:0)

如果您想获得异常值列表,可以使用boxplot的“out”组件。

例如: 创建一个数据框:带有一些平均值为20的随机值,并添加一些异常值。此代码将显示异常值。

 df1 = data.frame(A = c(rnorm(15,20,3),7,8,35,32))   #15 rnorm and 4 extreme values
 bplot=boxplot(df1)
 bplot$out