表示出力を関数化する

# 全ノードの最短距離は求めておく
sh.paths.mat <- shortest.paths(g.plus)
# その上で、

show.neighbors <- function(g,vs,L=1){
	tmp <- (sh.paths.mat[vs,] <= L)
	if(length(vs)>1){
		neighbors <- sign(apply(tmp,2,sum))
	}else{
		neighbors <- sign(tmp)
	}
	
	tmp.g <- induced.subgraph(g,which(neighbors==1))
	plot(tmp.g,vertex.label=V(tmp.g)$name,vertex.size=3,edge.arrow.mode=0)

}
# グラフ全体g.plusにおいてある点と距離1以内にあるノードで構成されたサブグラフを表示する
show.neighbors(g.plus,c("ベクトル空間"),L=1)

# 複数ノードを指定して、そのノード集合からの距離が指定距離以内のノードで構成されたサブグラフを表示する
show.neighbors.series <- function(g.plus,vs,Ls=0:4){
	par(ask=TRUE)
	for(i in Ls){
		show.neighbors(g.plus,vs,L=i)
	}
	par(ask=FALSE)
}

# 2ノードを指定して、その最短パスのノード列を列挙し、
two <- c("複体","直積")
sh.paths <- get.shortest.paths(g.plus,two[1],two[2])
# そのパスのノードをノード集合として、近隣ノードのサブグラフを表示する
show.neighbors.series(g.plus,unlist(sh.paths),Ls=0:7)