Advertisement
Guest User

Untitled

a guest
Jun 2nd, 2015
264
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.96 KB | None | 0 0
  1. require(igraph)
  2. require(dplyr)
  3.  
  4. # Simulate some smaller scale data:
  5. set.seed(123)
  6.  
  7. # fake IP addresses, assume counts follow normal dist (some heavy browsers, some light browsers)
  8. IPcounts <- round(rnorm(100,mean=10,sd=3))
  9.  
  10. # Repeat IPs by fake counts
  11. IP <- NULL
  12. for(i in 1:length(IPcounts)){
  13. IP <- append(IP,rep(i,IPcounts[i]))
  14. }
  15.  
  16. # fake domains, assume inverse popularity of visits (some very popular domains, many less popular domains)
  17. domainCounts <- round(1000*(1/c(1:10000))+1)
  18.  
  19. # repeat domains by popularity
  20. domain <- NULL
  21. for(i in 1:length(domainCounts)){
  22. domain <- append(domain,rep(i,domainCounts[i]))
  23. }
  24.  
  25.  
  26. # randomize the domain list
  27. domain <- sample(domain)
  28. # randomly sample IPs to match the domain list's size
  29. IP <- sample(IP,length(domain),replace=T)
  30.  
  31. # form the data frame
  32. testData <- data.frame(domain,IP)
  33.  
  34. # transpose the incidence matrix to form a one-mode adjacency matrix
  35. testData <- tcrossprod(table(testData))
  36.  
  37. # Use igraph to form up a graph of the data above
  38. testNet <- graph.data.frame(testData, directed = F,)
  39.  
  40. # See nodes
  41. V(testNet)
  42.  
  43. # See edges
  44. E(testNet)
  45.  
  46. # inspect degrees
  47. degree(testNet)
  48.  
  49. # Change node size to vary with degree
  50. V(testNet)$size<-0.5
  51.  
  52. V(testNet)$color<-'white'
  53.  
  54. # Plot the result
  55. par(mai=c(0,0,1,0))
  56. par(bg = 'black')
  57. set.seed(123)
  58. plot(testNet,
  59. layout=layout.fruchterman.reingold,
  60. main='SmallWeb',
  61. vertex.frame.color='white',
  62. vertex.label = NA,
  63. # edge.curved=F,
  64. edge.arrow.size = 0.2, # for directed plot
  65. edge.color = hsv(0.5,0.9,1,alpha=0.3)
  66. )
  67.  
  68.  
  69. # Remove low degree connections
  70. bad.vs<-V(testNet)[degree(testNet)<2] #identify those vertices part of less than 2 edges
  71. testNet<-delete.vertices(testNet, bad.vs) #exclude them from the graph
  72.  
  73. set.seed(123)
  74. plot(testNet,
  75. layout=layout.fruchterman.reingold,
  76. main='SmallWeb',
  77. vertex.frame.color='white',
  78. vertex.label = NA,
  79. # edge.curved=F,
  80. edge.arrow.size = 0.2, # for directed plot
  81. edge.color = hsv(0.5,0.9,1,alpha=0.3)
  82. )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement