Skip to content

Instantly share code, notes, and snippets.

@pshapiro
Created April 7, 2016 18:07
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save pshapiro/1b03fc8eed5e8b01af4fdd0a00a7abf7 to your computer and use it in GitHub Desktop.
Save pshapiro/1b03fc8eed5e8b01af4fdd0a00a7abf7 to your computer and use it in GitHub Desktop.
Plotting Internal PageRank with 1 to 10 map function
library("igraph")
internallinks <- read.csv("C:/Users/username/folder/screamingfrog-all-inlinks.csv")
g <- graph.data.frame(internallinks)
pr <- page.rank(g, algo = "prpack", vids = V(g), directed = TRUE, damping = 0.85)
values <- data.frame(pr$vector)
write.csv(values, file = "output-pagerank.csv")
map <- function(x, range = c(0,1), from.range=NA) {
if(any(is.na(from.range))) from.range <- range(x, na.rm=TRUE)
## check if all values are the same
if(!diff(from.range)) return(
matrix(mean(range), ncol=ncol(x), nrow=nrow(x),
dimnames = dimnames(x)))
## map to [0,1]
x <- (x-from.range[1])
x <- x/diff(from.range)
## handle single values
if(diff(from.range) == 0) x <- 0
## map from [0,1] to [range]
if (range[1]>range[2]) x <- 1-x
x <- x*(abs(diff(range))) + min(range)
x[x<min(range) | x>max(range)] <- NA
x
}
plot(g,
layout=layout.fruchterman.reingold,
vertex.size = map(pr$vector, c(1,10)),
vertex.label = NA,
vertex.label.color = "black",
edge.arrow.size=.2
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment