# Visualisation
```python=
from pyvis.network import Network
def graph_around_node(sdg_g,nids,radius=10):
try:
nodes=set([abs(x) for x in nids])
except:
nodes=set([abs(nids)])
to_explore=set(nodes)
for step in range(radius):
new_to_explore=set()
for nid in to_explore:
nv=sdg_g.get_nodeview(nid)
for nnid in [l.node().node_id() for l in nv.next()+nv.prev()]:
if abs(nnid) not in nodes:
new_to_explore.add(abs(nnid))
nodes.add(abs(nnid))
to_explore=new_to_explore
g = Network(height=1000,width=1500,notebook=True)
#g.force_atlas_2based()
g.hrepulsion()
for nid in nodes:
g.add_node(f'{nid}+',color='gray',label="+")
g.add_node(f'{nid}-',color='gray',label="-")
g.add_edge(f'{nid}+',f'{nid}-',color='gray',width=10,label=f'{nid}',smooth=False)#,physics=False,length=100)#,weight=50)
#connections=set()
for nid in nodes:
nv=sdg_g.get_nodeview(nid)
for l in nv.next():
onid=l.node().node_id()
if abs(onid) not in nodes or abs(onid)<nid: continue
if onid>0: g.add_edge(f'{nid}-',f'{onid}+',color='gray')
else: g.add_edge(f'{nid}-',f'{-onid}-',color='gray')
for l in nv.prev():
onid=l.node().node_id()
if abs(onid) not in nodes or abs(onid)<nid: continue
if onid>0: g.add_edge(f'{nid}+',f'{onid}-',color='gray')
else: g.add_edge(f'{nid}+',f'{-onid}+',color='gray')
g.set_options('''
var options = {
"nodes": {
"size": 10
},
"edges": {
"smooth": {
"type": "continuous",
"forceDirection": "none"
}
},
"physics": {
"hierarchicalRepulsion": {
"centralGravity": 0,
"springLength": 50,
"nodeDistance": 150
},
"maxVelocity": 150,
"minVelocity": 0,
"solver": "hierarchicalRepulsion",
"timestep": 0.9
}
}''')
return g.show("basic.html")
```
