Hello Iuri,

Code sent is a sample with basic functionality from the package I´m
due to send to CRAN. Final package allows inteactivity (dragging and
selecting points, zooming in/out fisheye effect, ...) and full
exploration of the hyperbolic-alike space simulated.

Example sent just give you a taste of the visual methaphor
implemented, as described in
http://www.antsearch.univ-tours.fr/publi/DacVenADMA2006.pdf

Plot generated with sample code allows you to analize the way kmeans
have worked. You are plotting every point in the sample and six groups
appear clearly (groups in the sample are so intragroup homogeneus that
in most cases you will see six points plotted).

Regards,

Eduardo San Miguel Martin
BI Consultant


2009/11/2 Iuri Gavronski <i...@ufrgs.br>:
> David, Eduardo,
>
> Thanks for the code. I have run it and I'm not sure what to do with the
> graph when it comes up. Can I interact with it, such as an RGL graph? I've
> tried clicking or dragging with the mouse and nothing happens. My system is
> a Windows Vista and R2.9.
>
> Best,
>
> Iuri.
>
> On Mon, Nov 2, 2009 at 7:35 PM, David Winsemius <dwinsem...@comcast.net>
> wrote:
>>
>> The attached file did not come through to the list. I think you have some
>> non-standard characters (or at least non-standard in my locale). I was able
>> to get the code to run after using the Zap Gremlins function in
>> TextWrangler. Prior to that "treatment" pretty much every line threw an
>> error of this sort:
>>
>> > setClass(Class = 'POI',
>> +        representation(matrizSim = 'matrix',cos.query.docs = 'vector',
>> Error: unexpected input in:
>> "setClass(Class = 'POI',
>> ¬"
>> >      wordsInQuery = 'ANY',docs = 'matrix', objeto = 'matrix', objetoC
>> Error: unexpected input in "¬"
>> > = 'matrix',
>> Error: unexpected '=' in "="
>> >      Pcoords = 'matrix', PcoordsFI = 'matrix', newPcoords = 'matrix',
>> Error: unexpected input in "¬"
>> > newcoords = 'numeric' ,
>> Error: unexpected ',' in "newcoords = 'numeric' ,"
>> >      newcoords_1 = 'numeric',  M = 'numeric', poisTextCol =
>> Error: unexpected input in "¬"
>>
>> I also needed to remove a couple of spaces between function names and
>> parentheses when these occurred at ends-of-lines. Attached is a working
>> version as a .txt file (which should make it through the list-serv:
>>
>>
>>
>>
>>
>> -- David.
>> > sessionInfo()
>> R version 2.10.0 Patched (2009-10-29 r50258)
>> x86_64-apple-darwin9.8.0
>>
>> locale:
>> [1] en_US.UTF-8/en_US.UTF-8/C/C/en_US.UTF-8/en_US.UTF-8
>>
>> attached base packages:
>> [1] splines   stats     graphics  grDevices utils     datasets  methods
>> base
>>
>> other attached packages:
>> [1] rms_2.1-0       Hmisc_3.7-0     survival_2.35-7
>>
>> loaded via a namespace (and not attached):
>> [1] cluster_1.12.1  grid_2.10.0     lattice_0.17-26
>>
>>
>>
>>
>> On Nov 2, 2009, at 3:43 PM, eduardo san miguel wrote:
>>
>>> I send r-code in an attached file.
>>>
>>> 2009/11/2 Iuri Gavronski <i...@proxima.adm.br>:
>>>>
>>>> Eduardo,
>>>>
>>>> Would you mind sending me the R code in an attached file. Your code
>>>> didn't
>>>> work here and I am not sure it is because of line breaks from the email
>>>> program.
>>>>
>>>> Iuri.
>>>>
>>>> On Mon, Nov 2, 2009 at 10:53 AM, eduardo san miguel <
>>>
>>> eduardosa...@gmail.com>
>>>>
>>>> wrote:
>>>>>
>>>>> Hello all,
>>>>>
>>>>> I have almost finished the development of a new package where ideas
>>>>> from Tamara Munzner, George Furnas and Costa and Venturini are
>>>>> implemented.
>>>>>
>>>>> 1.- Da Costa, David & Venturini, Gilles (2006). An Interactive
>>>>> Visualization Environment for Data Exploration Using Points of
>>>>> Interest. adma 2006: 416-423
>>>>>
>>>>> 2.- Furnas, George (1986). Generalized Fisheye Views. Human Factors in
>>>>> computing systems, CHI '86 conference proceedings, ACM, New York, pp.
>>>>> 16-23.
>>>>>
>>>>> 3.- Heidi Lam, Ronald A. Rensink, and Tamara Munzner (2006). Effects
>>>>> of 2D Geometric Transformations on Visual Memory. Proc. Applied
>>>>> Perception in Graphics and Visualization (APGV 2006), 119-126, 2006.
>>>>>
>>>>> 4.- Keith Lau, Ron Rensink, and Tamara Munzner (2004). Perceptual
>>>>> Invariance of Nonlinear Focus+Context Transformations. Proc. First
>>>>> Symposium on Applied Perception in Graphics and Visualization (APGV
>>>>> 04) 2004, pp 65-72.
>>>>>
>>>>> This is a sample with some basic functionality and a VERY BASIC
>>>>> example with kmeans plotting.
>>>>>
>>>>> Comments will be greatly appreciated.
>>>>>
>>>>> Regards
>>>>>
>>>>> -- R CODE
>>>>> require(methods)
>>>>>
>>>>> setClass(Class = 'POI',
>>>>>      representation(matrizSim = 'matrix',cos.query.docs = 'vector',
>>>>>    wordsInQuery = 'ANY',docs = 'matrix', objeto = 'matrix', objetoC
>>>>> = 'matrix',
>>>>>    Pcoords = 'matrix', PcoordsFI = 'matrix', newPcoords = 'matrix',
>>>>> newcoords = 'numeric' ,
>>>>>    newcoords_1 = 'numeric',  M = 'numeric', poisTextCol =
>>>>> 'character' , colores = 'vector' ,
>>>>>    poisCircleCol = 'character' , linesCol = 'character', itemsCol =
>>>>> 'character',
>>>>>    LABELS =  'logical',  vscale = 'numeric',  hscale = 'numeric',
>>>>> circleCol = 'character',
>>>>>    plotCol = 'character',  itemsFamily = 'character',  lenteDefault
>>>>> = 'numeric',
>>>>>    zoomDefault = 'numeric' ,  rateDefault = 'numeric' ,
>>>>> topKDefault = 'numeric'  ,
>>>>>    pal = 'character',  selected = 'numeric' ,  circRadio =
>>>>> 'numeric' , IncVscale = 'numeric',
>>>>>    cgnsphrFont = 'numeric', xClick_old = 'numeric',  yClick_old =
>>>>> 'numeric',
>>>>>    wordsInQueryFull = 'character' ),
>>>>>    prototype(cos.query.docs = 0, colores = 0, newcoords = 0,
>>>>> newcoords_1 = 0, M = 3,
>>>>>             vscale = 0.5 , hscale = 1.5 , circleCol = 'black' ,
>>>>> itemsCol = 'white',
>>>>>             poisTextCol =  '#fff5ee',  poisCircleCol = '#fff5ee',
>>>>> linesCol = 'white',
>>>>>             plotCol = 'black', itemsFamily = 'sans', lenteDefault =
>>>>> 1, zoomDefault = 15 ,
>>>>>             rateDefault = 0.1 , topKDefault = 25,  pal = 'topo' ,
>>>>> selected = 1 ,
>>>>>             circRadio = 0.25  , IncVscale = 0.05  ,  cgnsphrFont =
>>>>> 1.01, LABELS = T)
>>>>> )
>>>>>
>>>>> setGeneric("puntosMedios" ,
>>>>>           function(Pcoords, detalle = 5){standardGeneric
>>>>> ("puntosMedios")})
>>>>>
>>>>> setMethod("puntosMedios" ,
>>>>>          signature = "matrix",
>>>>>          function(Pcoords, detalle = 5){
>>>>>
>>>>> for (i in 1:detalle){
>>>>>  new_pcoords = matrix(rep(0,4*nrow(Pcoords)), nrow = 2*
>>>>> nrow(Pcoords), byrow = T )
>>>>>  cont = 0
>>>>>  for (i in 1:nrow(Pcoords)){
>>>>>         if (i == nrow(Pcoords)) {
>>>>>              cont = cont + 1
>>>>>              new_pcoords[cont,] = Pcoords[i,]
>>>>>              cont = cont + 1
>>>>>              new_pcoords[cont,] = Pcoords[i,] -
>>>>> ((Pcoords[i,]-Pcoords[1,])/2)
>>>>>      }else{
>>>>>              cont = cont + 1
>>>>>              new_pcoords[cont,] = Pcoords[i,]
>>>>>              cont = cont + 1
>>>>>              new_pcoords[cont,] = Pcoords[i,] -
>>>>> ((Pcoords[i,]-Pcoords[i+1,])/2)}}
>>>>>  Pcoords = new_pcoords}
>>>>>  return(Pcoords)
>>>>>
>>>>>  }
>>>>> )
>>>>>
>>>>> setGeneric("fishIout" ,
>>>>>           function(x, value){standardGeneric ("fishIout")})
>>>>>
>>>>> setMethod("fishIout" ,
>>>>>          signature = "numeric",
>>>>>          function(x, value){
>>>>>
>>>>> d = value
>>>>>      if (x > 0){
>>>>>              signo = 1
>>>>>      }else{
>>>>>              signo = -1
>>>>>      }
>>>>>      x = abs(x)
>>>>>      return(signo*(-(x/((d*x)-d-1))))
>>>>>  }
>>>>> )
>>>>>
>>>>> setGeneric("fishIin" ,
>>>>>           function(x, value){standardGeneric ("fishIin")})
>>>>>
>>>>> setMethod("fishIin" ,
>>>>>          signature = "numeric",
>>>>>          function(x, value){
>>>>>
>>>>> d = value
>>>>>      if (x > 0){
>>>>>              signo = 1
>>>>>      }else{
>>>>>              signo = -1
>>>>>      }
>>>>>      x = abs(x)
>>>>>
>>>>>      return(signo*(((d+1)*x)/(d*x+1)))
>>>>>  }
>>>>> )
>>>>>
>>>>> setGeneric("toPolar" ,
>>>>>           function(x, y){standardGeneric ("toPolar")})
>>>>>
>>>>> setMethod("toPolar" ,
>>>>>          signature = "numeric",
>>>>>          function(x, y){
>>>>>
>>>>>      t1 = atan2(y,x)
>>>>>      rP = sqrt(x^2+y^2)
>>>>>      return(c(t1 = t1,rP = rP))
>>>>>
>>>>>  }
>>>>> )
>>>>>
>>>>> setGeneric("toCartesian" ,
>>>>>           function(t1, rP){standardGeneric ("toCartesian")})
>>>>>
>>>>> setMethod("toCartesian" ,
>>>>>          signature = "numeric",
>>>>>          function(t1, rP){
>>>>>
>>>>>      x1 = rP*cos(t1)
>>>>>      y1 = rP*sin(t1)
>>>>>      return(c(x = x1,y = y1))
>>>>>
>>>>>  }
>>>>> )
>>>>>
>>>>> setGeneric("circulo" ,
>>>>>           function(cx, cy, r, circleCol, PLOT =
>>>>> TRUE){standardGeneric ("circulo")})
>>>>>
>>>>> setMethod("circulo" ,
>>>>>          signature = "numeric",
>>>>>          function(cx, cy, r, circleCol, PLOT = TRUE){
>>>>>
>>>>>      t = seq(0,2*pi,length=100)
>>>>>      circle = t(rbind(cx+sin(t)*r,cy+cos(t)*r))
>>>>>      if (PLOT == TRUE)
>>>>> plot(circle,type='l',,ylim=c(-1.15,1.15),xlim=c(-1.15,1.15),
>>>>>              ann=FALSE, axes=F, col = circleCol)
>>>>>      return(circle)
>>>>>
>>>>>  }
>>>>> )
>>>>>
>>>>> setGeneric("circulin" ,
>>>>>           function(cx, cy, r = 0.045,
>>>>>                    objeto, col = 'blue', PLOT = TRUE, label = 0){
>>>>>                    standardGeneric ("circulin")})
>>>>>
>>>>> setMethod("circulin" ,
>>>>>          signature = "ANY",
>>>>>          function(cx, cy, r = 0.045, objeto, col = 'blue', PLOT =
>>>>> TRUE, label = 0){
>>>>>
>>>>>      t = seq(0,2*pi,length=100)
>>>>>      circle = t(rbind(cx+sin(t)*r,cy+cos(t)*r))
>>>>>      points(circle,type='l', col = col)
>>>>>      if (label != 0) text(cx,cy,label,cex = .7)
>>>>>      insiders <-
>>>>> apply(objeto,1,function(co)(cx-co[1])^2+(cy-co[2])^2<r^2)
>>>>> assign('insiders', insiders , envir = POI.env)
>>>>>
>>>>>  }
>>>>> )
>>>>>
>>>>> setGeneric("addNoise" ,
>>>>>           function(m, tamanyo = 0.01){standardGeneric ("addNoise")})
>>>>>
>>>>> setMethod("addNoise" ,
>>>>>          signature = "matrix",
>>>>>          function(m, tamanyo = 0.01){
>>>>>
>>>>>      noise = function(m, t = tamanyo){
>>>>>              ruido = rnorm(length(m), 0,t)
>>>>>              return(m+ruido)
>>>>>      }
>>>>>      noised = noise(m)
>>>>>      unicos = which(duplicated(m) == FALSE)
>>>>>      m[-unicos,] = noised[-unicos,]
>>>>>      return(m)
>>>>>
>>>>>  }
>>>>> )
>>>>>
>>>>> setGeneric("toHiperbolico" ,
>>>>>           function(objeto, M = 1 , cx = 0, cy = 0, r = 1){
>>>>>           standardGeneric ("toHiperbolico")})
>>>>>
>>>>> setMethod("toHiperbolico" ,
>>>>>          signature = "matrix",
>>>>>          function(objeto, M = 1 , cx = 0, cy = 0, r = 1){
>>>>>
>>>>>      insiders =
>>>>> apply(objeto,1,function(co)(cx-co[1])^2+(cy-co[2])^2<r^2)
>>>>>      outers = which(insiders < 1)
>>>>>      objetoP = matrix(toPolar(objeto[,1],objeto[,2]),nc=2)
>>>>>      if (length(outers)){
>>>>>                      objetoP[outers,2] = 1
>>>>>      }
>>>>>      objetoP[,2] = sapply(objetoP[,2],fishIin,M)
>>>>>      objetoC = matrix(toCartesian(objetoP[,1],objetoP[,2]),nc=2)
>>>>> return(list(objetoC = objetoC,
>>>>>            objetoP = objetoP))
>>>>>
>>>>>  }
>>>>> )
>>>>>
>>>>> setGeneric("POIcoords<-" , function(object, value){standardGeneric
>>>>> ("POIcoords<-")})
>>>>>
>>>>> setReplaceMethod( f ="POIcoords",
>>>>>                 signature = 'POI',
>>>>>                 definition = function(object, value){
>>>>>                                 obj...@pcoords <- value$Pcoords
>>>>>                                 obj...@pcoordsfi <- value$PcoordsFI
>>>>>                                 obj...@newpcoords <- value$newPcoords
>>>>>                                 obj...@objeto <- value$objeto
>>>>>
>>>>>                                 return(object)
>>>>>                              }
>>>>> )
>>>>>
>>>>> setGeneric("POICalc" ,
>>>>>           function(objeto, NC, cx=0, cy=0, r=1,
>>>>> ...){standardGeneric ("POICalc")})
>>>>>
>>>>> setMethod("POICalc" ,
>>>>>          signature = "POI",
>>>>>          function(objeto, NC, cx=0, cy=0, r=1, ...){
>>>>>
>>>>>  MatrizSim = obj...@matrizsim
>>>>>  secuencia = seq(2/NC,2,2/NC)
>>>>>  Pcoords = matrix(rep(0,NC*2),nc=2)
>>>>>  n = 1
>>>>>  for (i in secuencia){
>>>>>    Pcoords[n,] = c(r * cos(i*pi), r * sin(i*pi))
>>>>>    n = n+1
>>>>>  }
>>>>>  PcoordsFI = matrix(toPolar(Pcoords[,1],Pcoords[,2]),nc=2)
>>>>>  PcoordsFI[,2] = PcoordsFI[,2]+.15
>>>>>  PcoordsFI = matrix(toCartesian(PcoordsFI[,1],PcoordsFI[,2]),nc=2)
>>>>>
>>>>>  if (nrow(Pcoords) != 1){
>>>>>  newPcoords = puntosMedios(Pcoords)
>>>>>  } else {
>>>>>    newPcoords = Pcoords
>>>>>  }
>>>>>
>>>>>  MatrizSim[is.nan(MatrizSim/rowSums(MatrizSim))] <- 0
>>>>>
>>>>>  W = MatrizSim / rowSums(MatrizSim)
>>>>>  W[is.nan(W)] <- 0
>>>>>  nwords = nrow(W)
>>>>>  objeto = matrix(rep(0,2*nwords),nc=2)
>>>>>  for (j in 1:nwords){
>>>>>    for (nPOI in 1:NC){
>>>>>       objeto[j,1] = objeto[j,1]+(W[j,nPOI]*Pcoords[nPOI,1])
>>>>>       objeto[j,2] = objeto[j,2]+(W[j,nPOI]*Pcoords[nPOI,2])
>>>>>    }
>>>>>  }
>>>>>
>>>>>  objeto = addNoise(objeto)
>>>>>
>>>>>  return(list(Pcoords = Pcoords,
>>>>>             PcoordsFI = PcoordsFI,
>>>>>             newPcoords = newPcoords,
>>>>>             objeto = objeto))
>>>>>
>>>>>  }
>>>>> )
>>>>>
>>>>> setGeneric("POIPlot" ,
>>>>>           function(POI){standardGeneric ("POIPlot")})
>>>>>
>>>>> setMethod("POIPlot" ,
>>>>>          signature = "POI",
>>>>>          function(POI){
>>>>>
>>>>>  par(bg=...@plotcol, mar = c(0.1,0.1,0.1,0.1), family =
>>>>> p...@itemsfamily)
>>>>>
>>>>>
>>>>>  if (exists('POI.env')) {
>>>>>    if (exists('POI', envir = POI.env)) {
>>>>>      POI <- get('POI', envir = POI.env)
>>>>>    }
>>>>>  }
>>>>>
>>>>>  selected = p...@selected
>>>>>  objeto = p...@objeto
>>>>>  newcoords = p...@newcoords
>>>>>  newcoords_1 = p...@newcoords_1
>>>>>  NC = length(p...@wordsinquery)
>>>>>  cx=0
>>>>>  cy=0
>>>>>  r=1
>>>>>  etiq2 = p...@docs[,1]
>>>>>  etiq = p...@wordsinquery
>>>>>  fishEYE = TRUE
>>>>>  M = p...@m
>>>>>  poisTextCol = p...@poistextcol
>>>>>  colores = p...@colores[poi@docs]
>>>>>  poisCircleCol = p...@poiscirclecol
>>>>>  linesCol = p...@linescol
>>>>>  itemsCol = p...@itemscol
>>>>>  circleCol = p...@circlecol
>>>>>  LABELS =  ...@labels
>>>>>  Pcoords = p...@pcoords
>>>>>  newPcoords = p...@newpcoords
>>>>>  cgnsphrFont = p...@cgnsphrfont
>>>>>
>>>>>  newcoords_par = newcoords
>>>>>
>>>>>  newcoords_Pcoords = matrix(rep( c(newcoords,newcoords_1 ),
>>>>>                            nrow(Pcoords)),nc=2,byrow=TRUE)
>>>>>
>>>>>  newcoords_puntosMediosPcoords = matrix(rep( c(newcoords,newcoords_1),
>>>>>
>>>>> nrow(newPcoords)),nc=2,byrow=TRUE)
>>>>>
>>>>>  newcoords = matrix(rep( c(newcoords,newcoords_1),
>>>>>                    nrow(objeto)),nc=2,byrow=TRUE)
>>>>>
>>>>>  objeto = objeto+newcoords
>>>>>  objetoH = toHiperbolico(objeto, M)
>>>>>  objetoC = objetoH$objetoC
>>>>>  objetoP = objetoH$objetoP
>>>>>
>>>>>  Pcoords = Pcoords + newcoords_Pcoords
>>>>>  PcoordsH = toHiperbolico(Pcoords, M)
>>>>>  PcoordsC = PcoordsH$objetoC
>>>>>  PcoordsP = PcoordsH$objetoP
>>>>>
>>>>>  newPcoords = newPcoords + newcoords_puntosMediosPcoords
>>>>>  newPcoordsH = toHiperbolico(newPcoords, M)
>>>>>  Pcoords_objetoC = newPcoordsH$objetoC
>>>>>
>>>>>  if (LABELS) {
>>>>>    PcoordsFI = matrix(toPolar(PcoordsC[,1],PcoordsC[,2]),nc=2)
>>>>>    PcoordsFI[,2] = 1 +.15
>>>>>    PcoordsFI = matrix(toCartesian(PcoordsFI[,1],PcoordsFI[,2]),nc=2)
>>>>>  }
>>>>>
>>>>>  plot(circulo(0,0,1, circleCol, PLOT =
>>>>> FALSE),cex=.5,ylim=c(-1.15,1.15),xlim=c(-1.15,1.15),
>>>>>                ann=FALSE, axes=F,type='l', col = circleCol)
>>>>>
>>>>>  points(objetoC, pch=19, col = colores, cex = 1.5 - objetoP[,2])
>>>>>
>>>>>  text(objetoC[,1], objetoC[,2], labels = etiq2, cex = cgnsphrFont -
>>>>> objetoP[,2],
>>>>>      pos = 3, col = itemsCol)
>>>>>
>>>>>  abline(h = cx, col = 'grey', lty = 'dashed')
>>>>>  abline(v = cy, col = 'grey', lty = 'dashed')
>>>>>
>>>>>
>>>>>  points(PcoordsC,cex = 2, col = poisCircleCol)
>>>>>
>>>>>  lines(Pcoords_objetoC, col = linesCol)
>>>>>
>>>>>
>>>>>
>>>
>>> segments(Pcoords_objetoC[nrow(Pcoords_objetoC),1],Pcoords_objetoC[nrow(Pcoords_objetoC),2],
>>>>>
>>>>>          Pcoords_objetoC[1,1],Pcoords_objetoC[1,2], col = linesCol)
>>>>>
>>>>>  if (LABELS) {
>>>>>    text(PcoordsFI[,1],PcoordsFI[,2],toupper(etiq),cex=.75, col =
>>>>> poisTextCol)
>>>>>  }
>>>>>
>>>>>  if (selected != 1) {
>>>>>    circulin(0,0, .5, objeto = objetoC)   # probando
>>>>>  }
>>>>>
>>>>>  if (!exists('POI.env')){
>>>>>    POI.env <<- new.env()
>>>>>  }
>>>>>  poiCOPY = POI
>>>>>  poic...@objeto <- objeto
>>>>>  poic...@objetoc <- objetoC
>>>>>  poic...@newpcoords <- newPcoords
>>>>>  poic...@pcoords <- Pcoords
>>>>>  assign('POI',poiCOPY , envir = POI.env)
>>>>>
>>>>>  }
>>>>> )
>>>>>
>>>>>
>>>>> # *strong*VERY*strong* basic kmeans example with 6 clusters and 10
>>>>> variables
>>>>> x <- matrix(rnorm(100, mean = 1, sd = .3), ncol = 10)
>>>>> x <- rbind(x,matrix(rnorm(200, mean = 5, sd = .3), ncol = 10))
>>>>> x <- rbind(x,matrix(rnorm(100, mean = 10, sd = .3), ncol = 10))
>>>>> x <- rbind(x,matrix(rnorm(100, mean = 15, sd = .3), ncol = 10))
>>>>> x <- rbind(x,matrix(rnorm(200, mean = 20, sd = .3), ncol = 10))
>>>>> x <- rbind(x,matrix(rnorm(100, mean = 25, sd = .3), ncol = 10))
>>>>>
>>>>> cl <- kmeans(x, 6, iter.max = 100 ,nstart = 25)
>>>>>
>>>>> # *strong*VERY*strong* basic way of reordering cluster output for
>>>>> better plotting
>>>>> # here we reorder using just the first cluster
>>>>> reorder.cl <- as.numeric(names(sort(rank((as.matrix(dist(cl$centers,
>>>>> diag = T)))[,1]))))
>>>>> cl$centers <- cl$centers[reorder.cl, ]
>>>>> cl$size    <- cl$size[reorder.cl]
>>>>>
>>>>> # distance matrix between each element and its cluster center
>>>>> matrizSim = matrix(rep(0, nrow(cl$centers) * nrow(x)), ncol =
>>>>> nrow(cl$centers))
>>>>> for (n in 1:nrow(cl$centers)){
>>>>> for (i in 1:nrow(x)) {
>>>>>  a = x[i,]
>>>>>  b = cl$centers[n,]
>>>>>  matrizSim[[i,n]] = dist(rbind(a,b)) # eucl dist
>>>>> }
>>>>> }
>>>>>
>>>>> # From dist to similarity (0 - 1)
>>>>> matrizSim = 1 - (matrizSim / rowSums(matrizSim) )
>>>>> # exagerate similarity
>>>>> matrizSim  = matrizSim^3
>>>>>
>>>>> # Create POI plot
>>>>> clusterPOI = new('POI')
>>>>> cluster...@m = 1          # no fisheye distorsion
>>>>> cluster...@matrizsim <- matrizSim
>>>>> cluster...@wordsinquery <- paste('"',
>>>>> as.character(round(cl$centers[,1]),2),'"', '
>>>>> size',as.character(cl$size))
>>>>> POIcoords(clusterPOI) <- POICalc(clusterPOI
>>>>> ,length(cluster...@wordsinquery))
>>>>> cluster...@docs <-
>>>>>
>>>>> cbind(matrix(seq(1:nrow(cluster...@objeto
>>>
>>> ))),matrix(seq(1:nrow(cluster...@objeto))))
>>>>>
>>>>> cluster...@colores <- cl$cluster  + 1
>>>>> cluster...@cos.query.docs <- rep(1, length(cl$cluster))
>>>>> POI.env <<- new.env()
>>>>> POIPlot(clusterPOI)
>>>>
>>>>
>>> ______________________________________________
>>> R-help@r-project.org mailing list
>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>> PLEASE do read the posting guide
>>> http://www.R-project.org/posting-guide.html
>>> and provide commented, minimal, self-contained, reproducible code.
>>
>> David Winsemius, MD
>> Heritage Laboratories
>> West Hartford, CT
>>
>>
>
>

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to