File: IntInNode.r

package info (click to toggle)
r-cran-semplot 1.1.7-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 464 kB
  • sloc: makefile: 2
file content (84 lines) | stat: -rw-r--r-- 2,808 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
IntInNode <- function(layout,cex,shape,m,width=0.2,triangles=TRUE,col="black",side=1,inside=TRUE)
{
  N <- nrow(layout)
  if (length(cex)==1) cex <- rep(cex,N)
  if (length(shape)==1) shape <- rep(shape,N)
  if (length(col)==1) col <- rep(col,N)
  if (length(side)==1) side <- rep(side,N)
  
  # m is vector of margins to plot lines, NA indicates no line
  # side: 1. bottom, 2. left, 3. top, 4. right.
  # inside: if TRUE thresholds are plotted in the node, filling from top to bottom, if FALSE they are plotted at the side.
  
  for (i in seq_along(m))
  {
    if (!is.na(m[i]))
    {
      #       browser()
      x <- layout[i,1]
      y <- layout[i,2]
      xran <- qgraph:::Cent2Edge(layout[i,1],layout[i,2],pi/2,cex[i],cex[i],shape[i])[1] - x
      yran <- qgraph:::Cent2Edge(layout[i,1],layout[i,2],0,cex[i],cex[i],shape[i])[2] - y
      
      if (!inside)
      {
        if (side[i]==1)
        {
          for (j in 1:length(m[[i]]))
          {
            lines(c(x-xran+m[[i]][j]*xran*2,x-xran+m[[i]][j]*xran*2),c(y-yran-width*yran,y-yran+width*yran),col=col[i])
          }
        } else if (side[i]==2)
        {
          for (j in 1:length(m[[i]]))
          {
            lines(c(x-xran-width*xran,x-xran+width*xran),c(y-yran+m[[i]][j]*yran*2,y-yran+m[[i]][j]*yran*2),col=col[i])
          }        
        } else if (side[i]==3)
        {
          for (j in 1:length(m[[i]]))
          {
            lines(c(x-xran+m[[i]][j]*xran*2,x-xran+m[[i]][j]*xran*2),c(y+yran-width*yran,y+yran+width*yran),col=col[i])
          }        
        } else if (side[i]==4)
        {
          for (j in 1:length(m[[i]]))
          {
            lines(c(x+xran-width*xran,x+xran+width*xran),c(y-yran+m[[i]][j]*yran*2,y-yran+m[[i]][j]*yran*2),col=col[i])
          }        
        }
      } else 
      {
        if (side[i]==1)
        {
          for (j in 1:length(m[[i]]))
          {
            lines(c(x-xran+m[[i]][j]*xran*2,x-xran+m[[i]][j]*xran*2),c(y-yran,y+yran),col=col[i])
          }
        } else if (side[i]==2)
        {
          for (j in 1:length(m[[i]]))
          {
            lines(c(x-xran,x+xran),c(y-yran+m[[i]][j]*yran*2,y-yran+m[[i]][j]*yran*2),col=col[i])
          }        
        } else if (side[i]==3)
        {
          for (j in 1:length(m[[i]]))
          {
            lines(c(x-xran+m[[i]][j]*xran*2,x-xran+m[[i]][j]*xran*2),c(y-yran,y+yran),col=col[i])
          }        
        } else if (side[i]==4)
        {
          for (j in 1:length(m[[i]]))
          {
            lines(c(x-xran,x+xran),c(y-yran+m[[i]][j]*yran*2,y-yran+m[[i]][j]*yran*2),col=col[i])
          }        
        }        
      }
    }
  }
}
#           if (triangles)
#           {
#             points(x,y-yran+m[[i]][j]*yran*2,pch=17,cex=cex[1]/10,col=col[i])
#           }