通过减少交叉点数量来优化绘图(在R中)

时间:2016-12-12 20:00:33

标签: r plot intersection

我有一个大数据集,每个条目有8个属性。 当如图所示将其绘制在图表中时,我会得到一个非常混乱的情节。
因此,我计划计算属性的最佳排列(具有" ... ic"的那些),其中线之间存在最小交叉。我已经通过对属性进行排序来手动尝试,以便"绿色"看起来尽可能线性,但我想知道最小交叉点的解决方案是什么。

所以我提出了一个问题,如果我能以某种方式计算这些交叉点,或者是否有更简单的方法来解决我的问题。 (也许改变规模?但在我的理解中,不应该改变任何东西......)

该图由以下函数生成:

 function(oliveareax, oliveareagroups, oliveareacol=regioncol)
  {
    supline <- trellis.par.get("superpose.line")
    suplineold <- supline
    supline$col = oliveareacol
    trellis.par.set("superpose.line" = supline)
    print(parallelplot(oliveareax,
                       horizontal.axis = FALSE, scales = list(x = list(rot = 90)),
                       groups = olives$region,
                       auto.key=TRUE,
    ) )
    trellis.par.set("superpose.line" = suplineold)
    rm(suplineold, supline)
  }

情节如下:

enter image description here

编辑:我编写了两个函数来计算平均值的交集数,并找出平均值最小交集的排列。后者不起作用(而且效率很低),也许有人可以至少帮助我吗?它给出了&#34; 1 2 2 2 2 2 2 2&#34;,尽管我的实施不可能......

findminintersec <- function(set1, set2, set3){
  ptm <- proc.time()
  idi <- 1:8
  mincount <- .Machine$double.max
  for(i in 1:8){
    idj <- idi[-i]
    for(j in idj){
      idk <- idj[-j]
      for(k in idk){
        idl <- idk[-k]
        for(l in idl){
          idm <- idl[-l]
          for(m in idm){
            idn <- idm[-m]
            for(n in idn){
              ido <- idn[-n]
              for(o in ido){
                idp <- ido[-o]
                for(p in idp){
                  count <- interseccount(set1[c(i,j,k,l,m,n,o,p)], set2[c(i,j,k,l,m,n,o,p)], set3[c(i,j,k,l,m,n,o,p)])
                  if(count < mincount){
                    mincount <- count
                    minperm <- c(i,j,k,l,m,n,o,p)

                  }
                }
                idp <- 1:8
              }
              ido <- 1:8
            }
            idn <- 1:8
          }
          idm <- 1:8
        }
        idl <- 1:8
      }
      idk <- 1:8
    }
    idj <- 1:8
  }
  #return(mincount)
  print(proc.time() - ptm)
  return(minperm)
}

0 个答案:

没有答案