ENPM809G - NetworkX and FB Lost Circles

NetworkX analysis of my FB graph

In [1]:
# Magic line to ensure plotting happens in Jupyter
%matplotlib inline

# PyPlot is an object-oriented plot interface to matplotlib
import matplotlib.pyplot as plt 
In [2]:
# Load up the networkx package
import networkx as nx

Reading Graphs With NetworkX

Reading a graph with NetworkX is supported with several commands.

In [3]:
g = nx.read_graphml("cbuntain_fb_v2.graphml")
In [4]:
nx.draw(g, with_labels=True)

plt.show()
In [5]:
# Need to use the data=True named argument
print("Nodes w/ data:")
for node in g.nodes(data=True):
    print("\tNode:", node[0], node[1]["label"])
Nodes w/ data:
	Node: n0 m.leigh.cook
	Node: n1 chris.harrington.7731
	Node: n2 greg.bennett.56
	Node: n3 kerapolis
	Node: n4 leslie.harrington.58
	Node: n5 carrie.buntain
	Node: n6 renee.lague.1
	Node: n7 profile.php?id=78200736
	Node: n8 bruce.buntain
	Node: n9 stacy.nbro
	Node: n10 CandioQuinn
	Node: n11 kmicinski
	Node: n12 jessica.cline.376
	Node: n13 amanda.c.burt
	Node: n14 LibbyTatum
	Node: n15 chris.kilroy.9
	Node: n16 rachel.eichhorn
	Node: n17 rosy.rose8
	Node: n18 tracey.davies.9674
	Node: n19 jordanuhl
	Node: n20 sarah.weeks.75
	Node: n21 karenlboyd
	Node: n22 rachel.goldstein.54
	Node: n23 bonnie.bluml
	Node: n24 golbeck
	Node: n25 jcreekmore
	Node: n26 brenna.noelle
	Node: n27 yuz207
	Node: n28 atragland
	Node: n29 harringtonol
	Node: n30 angelaroseparade123
	Node: n31 Liz.keener
	Node: n32 nick.proferes
	Node: n33 profile.php?id=1225830322
	Node: n34 jamey.louise.5
	Node: n35 ala.piotrkowicz
	Node: n36 jen.vanrite
	Node: n37 haley.allen
	Node: n38 kelly.allen.315865
	Node: n39 pamtard
	Node: n40 june.ahn
	Node: n41 rachel.kass
	Node: n42 molly.hoffmaster.3
	Node: n43 mattm401
	Node: n44 the.sana.malik
	Node: n45 matthew.evanusa
	Node: n46 sarah.kilkowski
	Node: n47 mitchell.bluml
	Node: n48 mflap
	Node: n49 kit.winner
	Node: n50 alma.sanchez.988
	Node: n51 cplaisant
	Node: n52 amandinne
	Node: n53 carlea.holljensen
	Node: n54 zak.glennon
	Node: n55 lcsarin
	Node: n56 TimberWerker
	Node: n57 mike.peter1
	Node: n58 MasThyVampyre
	Node: n59 takyeon
	Node: n60 sade.ford.5
	Node: n61 katharina
	Node: n62 john.bland.16
	Node: n63 benjamindhorne314
	Node: n64 christoph.trattner
	Node: n65 sa.malushte
	Node: n66 dan.rochowiak
	Node: n67 BMDeane
	Node: n68 kerri.sherlock.talbot
	Node: n69 benjamin.epstein1
	Node: n70 brian.brubach
	Node: n71 Irta01
	Node: n72 paul.brinkley.52
	Node: n73 sarah.dipasquale.7
	Node: n74 x.b.jenkins
	Node: n75 alex.malozemoff
	Node: n76 philip.dasler
	Node: n77 profile.php?id=100012486462654
	Node: n78 kat.bunch.73
	Node: n79 courtney.stratton
	Node: n80 glynnis
	Node: n81 brignerkn
	Node: n82 dylee
	Node: n83 mullerb10
	Node: n84 Bamaviper1
	Node: n85 casey.calamaio
	Node: n86 parniaz
	Node: n87 david.kapp.908
	Node: n88 claudia.bach.52
	Node: n89 jacob.boyce.mcarthur
	Node: n90 christina.ascani
	Node: n91 schwa021
	Node: n92 alisonxyz
	Node: n93 adam.burt.543
	Node: n94 frances.buntain
	Node: n95 christine.george.39566
	Node: n96 profile.php?id=100014446210937
	Node: n97 natalie.whitecook
	Node: n98 ranliudesign
	Node: n99 kayleigh.t.pritchett
	Node: n100 robert.dobbins
	Node: n101 emily.carpenter
	Node: n102 courtney.p.keeton
	Node: n103 ki.shin.9
	Node: n104 benalene
	Node: n105 rachel.fry.58
	Node: n106 tsands1
	Node: n107 erin.rassier
	Node: n108 katie.hyrkas
	Node: n109 jack.jenkins.338211
	Node: n110 strictlymike
	Node: n111 profile.php?id=100006738221615
	Node: n112 alaracon
	Node: n113 dwight.decarme
	Node: n114 midge.newtonrast
	Node: n115 nothingnewtome
	Node: n116 zamira.daw
	Node: n117 melanie.gates.35
	Node: n118 david.montier.35
	Node: n119 erin.cook.9883
	Node: n120 potreyto
	Node: n121 darrenkinnaird
	Node: n122 kristin.williams.5095
	Node: n123 jill.hardy
	Node: n124 jessica.gladstone.98
	Node: n125 ben.balser.1
	Node: n126 rebecca.mosley.7
	Node: n127 brian.mcclimens
	Node: n128 lauren.orr.35
	Node: n129 kristin.bramlett
	Node: n130 alex.niu1
	Node: n131 saveski.martin
	Node: n132 monaleigh.guha
	Node: n133 michael.tucker.568
	Node: n134 mbarronj
	Node: n135 katie.kaczmarek.1
	Node: n136 lisa.tunstill
	Node: n137 StephenHBach
	Node: n138 tonyn.palmello
	Node: n139 chris.furlough
	Node: n140 achang4
	Node: n141 andrea.smithsell
	Node: n142 samuel.hokanson
	Node: n143 angjoo
	Node: n144 lorelei.dorittyduff
	Node: n145 elisehorn
	Node: n146 chromatic.dispersion
	Node: n147 manaswi.saha
	Node: n148 chairmanhammer
	Node: n149 JDough1
	Node: n150 jake.cook.3914
	Node: n151 fred.dickinson.5
	Node: n152 jim.spadaro
	Node: n153 lnorooz
	Node: n154 pretsbhargava
	Node: n155 uran.oh.9
	Node: n156 m.adil.yalcin
	Node: n157 pujara
	Node: n158 thor.christianson
	Node: n159 andrew.adrian.144
	Node: n160 danielle.treadway
	Node: n161 spike.anderson
	Node: n162 lowe300zx
	Node: n163 kate.knudsen.9275
	Node: n164 matt.statham.589
	Node: n165 gyeongbae.jung
	Node: n166 jhatmaker
	Node: n167 jessicaannelliot
	Node: n168 christina.cook.507
	Node: n169 missrobynthomas
	Node: n170 rodney.bluml
	Node: n171 crystal.phillips.50
	Node: n172 kotaro.hara
	Node: n173 jenny.russell1
	Node: n174 matthew.mitsui.3
	Node: n175 s14asilvia
	Node: n176 jacob.putman
	Node: n177 ncantelmo
	Node: n178 macneal.bennett
	Node: n179 lynna.ahlschlager
	Node: n180 erin.mcgrath1
	Node: n181 jon.tourville
	Node: n182 scottingram.scott
	Node: n183 jwisotsky
	Node: n184 mital.modi
	Node: n185 mamacatter
	Node: n186 elizabeth.delatorre.12
	Node: n187 hdelugach
	Node: n188 sciencebandit
	Node: n189 profile.php?id=27427660
	Node: n190 cynthia.m.trujillo
	Node: n191 katie.t.macfarlane
	Node: n192 dxoldman
	Node: n193 LaughingIsWhatIDoBest
	Node: n194 tyler.albers.9
	Node: n195 briana.mcintire
	Node: n196 profile.php?id=27420031
	Node: n197 kenny.federline
	Node: n198 drew.gentry.98
	Node: n199 ibgnome
	Node: n200 austin.beck.165470
	Node: n201 Fd757
	Node: n202 ronni.chancellor
	Node: n203 danette.milner
	Node: n204 joescii
	Node: n205 TheRiegel
	Node: n206 justinebsmith
	Node: n207 jackie.smithcashion
	Node: n208 camilla.lockridge
	Node: n209 nelson.auner
	Node: n210 lacey.merritt.1
	Node: n211 ktysinger1
	Node: n212 mah.aby
	Node: n213 rcwiles
	Node: n214 danielle.g.hauck
	Node: n215 tehdux0r
	Node: n216 michael.vincent.7927
	Node: n217 kealey.bluml
	Node: n218 aaron.banschick
	Node: n219 debra.moriarity
	Node: n220 jon.froehlich
	Node: n221 AzuriNs
	Node: n222 ioana.bercea.3
	Node: n223 dpauw
	Node: n224 chocolatesnitches
	Node: n225 luke.chamberlain.71
	Node: n226 vkn13
	Node: n227 madey.jay.3
	Node: n228 phiwissenschaft
	Node: n229 ammrogers
	Node: n230 profile.php?id=4918114
	Node: n231 ahlearn
	Node: n232 sundayvanderver
	Node: n233 SarahChristineM
	Node: n234 theoneushouldknow
	Node: n235 Jon.L.Perreault
	Node: n236 techfreak713
	Node: n237 72720000gi
	Node: n238 coreyjrosenbloom
	Node: n239 geoffrey.o.babb
	Node: n240 SeriouslyMingsly
	Node: n241 capcom.coleman
	Node: n242 ajruffin
	Node: n243 profile.php?id=26519305
	Node: n244 christankhall
	Node: n245 will.sinclair.549
	Node: n246 heather.brockman
	Node: n247 arronirrish
	Node: n248 crystal.y.smith.9
	Node: n249 mandyleeteng
	Node: n250 bert.klimer
	Node: n251 ryan.hamilton.77398
	Node: n252 patrickegilbert
	Node: n253 tj.talty
	Node: n254 rob.ely.90
	Node: n255 will.p.elliott
	Node: n256 matthewkwillson
	Node: n257 adam.garnick
	Node: n258 tom.brasnon
	Node: n259 jschansman
	Node: n260 john.i.gifford
	Node: n261 wyers
	Node: n262 seth.e.farrington
	Node: n263 jonathan.fincher.71
	Node: n264 thejayjacks
	Node: n265 tyler.cutshall
	Node: n266 dtysinger1
	Node: n267 JCollins86
	Node: n268 robert.estes.923
	Node: n269 jennifer.torska
	Node: n270 erin.t.elliott
	Node: n271 bashwork
	Node: n272 a.r.braman
	Node: n273 matt.thomas.50552338
	Node: n274 rocketScience85
	Node: n275 sarah.roden.71
	Node: n276 steven.boyer
	Node: n277 kurt.stefanie
	Node: n278 chazzm
	Node: n279 teacherashley
	Node: n280 sarah.reeves.370
	Node: n281 linda.scavarda
	Node: n282 jonathan.b.hanks
	Node: n283 kellylamb
	Node: n284 danielle.l.stark
	Node: n285 karina.soucyacker
	Node: n286 beth.scavarda
	Node: n287 charles.acker.5
	Node: n288 jenniferstellacotton
	Node: n289 jonathankline82
	Node: n290 rachel.gangaware
	Node: n291 emcolvin
	Node: n292 totallyoleary
	Node: n293 janet.harrington.125
	Node: n294 CindylouSargent
	Node: n295 kentonbartlett
	Node: n296 jennifer.t.mayfield
	Node: n297 profile.php?id=14832383
	Node: n298 karthikb007
	Node: n299 sharjt
	Node: n300 shauntana.mcmillan
	Node: n301 tasha.rhi
	Node: n302 robin.dasler
	Node: n303 mary.mcwhirter.98
	Node: n304 joohee.choi1
	Node: n305 william.sargent.16
	Node: n306 sean.bristow.5
	Node: n307 don.newton.79
	Node: n308 alexis.evangelos
	Node: n309 burke.cates
	Node: n310 adam.loudermilk.9
	Node: n311 tracy.hamlin.39
	Node: n312 dale.cook.520
	Node: n313 sam.cook.35
	Node: n314 sara.anderson.123829
	Node: n315 cassandra.stang
	Node: n316 sjmason3525
	Node: n317 laura.noblitt.9
	Node: n318 matthew.buhl.9
	Node: n319 jessica.hatch.142
	Node: n320 chris.brown.503645
	Node: n321 bolen.tiffany
	Node: n322 james.threadgill.39
	Node: n323 billy.sargent.507
	Node: n324 coleta.newton
	Node: n325 doug.goldstein.75
	Node: n326 mspacex
	Node: n327 steven.saul.10
	Node: n328 jennylynnpinson
	Node: n329 debra.segal.1
	Node: n330 daniel.yost.92
	Node: n331 mountiedm
	Node: n332 rpwilsonjr
	Node: n333 lizzity
	Node: n334 aaron.norman88
	Node: n335 doriangreen
	Node: n336 andrea.hartman.14
	Node: n337 ladydragon324
	Node: n338 orianna.demasi.1
	Node: n339 jeff.frew1
	Node: n340 jeremy.hartman.5245
	Node: n341 daniel.cardosi
	Node: n342 brian.heyer
	Node: n343 meethumalu
	Node: n344 sarah.weishampel.7
	Node: n345 kristina.laffkas
	Node: n346 Farnaz.A
	Node: n347 profile.php?id=653672135
	Node: n348 nindoja
	Node: n349 vassi.cher
	Node: n350 zhang.weiwei
	Node: n351 alexander.moreno.75
	Node: n352 traceforbes
	Node: n353 claire.e.capra
	Node: n354 blythe.brauer
	Node: n355 greatwhitetyrannosaurusshark
	Node: n356 evanne.holloway
	Node: n357 joseph.franke.14
	Node: n358 btall95
	Node: n359 ottomatic98
	Node: n360 profile.php?id=7016469
	Node: n361 emily.padgett.355
	Node: n362 eric.harris.9659
	Node: n363 dan.hallenbeck.9
	Node: n364 stacie.merz
	Node: n365 jennifer.ditman
	Node: n366 dana.dafter
	Node: n367 roberto.abreu.79
	Node: n368 ken.nevins
	Node: n369 richard.d.kennedy
	Node: n370 jay.miller.12327
	Node: n371 brandon.ingram.96
	Node: n372 karl.grindel
	Node: n373 david.mcbrayer.9
	Node: n374 mark.schramka1
	Node: n375 scott.royce.921
	Node: n376 ineedarandomname
	Node: n377 holtn
	Node: n378 emilie.gilliland
	Node: n379 pj.scalisi
	Node: n380 goawaytoday
	Node: n381 profile.php?id=20506176
	Node: n382 kix444
	Node: n383 john.parris.733
	Node: n384 mgubbe
	Node: n385 rongjian.lan
	Node: n386 ShengZha
	Node: n387 roozbeh.yz
	Node: n388 juncheng.chen1
	Node: n389 bai.wei.372
	Node: n390 christoph.schulze.84
	Node: n391 matt.coonley
	Node: n392 joseph.brasher.7
	Node: n393 shawn.unangst
	Node: n394 victoria.douglas.12
	Node: n395 imbri
	Node: n396 issannewton
	Node: n397 snigdha.chaturvedi.52
	Node: n398 piotr.mardziel
	Node: n399 suzanne.g.roten
	Node: n400 rose.u.kirby
	Node: n401 logan.ausderau
	Node: n402 RayneeDay13
	Node: n403 terry.meacham
	Node: n404 andre.roques.37
	Node: n405 drewcamp
	Node: n406 alex.capps.315
	Node: n407 michael.burleson.9
	Node: n408 patrick.burdick.12
	Node: n409 andy.kirkpatrick.7355
	Node: n410 elizabeth.olivares.982
	Node: n411 mac.pace.10
	Node: n412 ricky.adams.756
	Node: n413 thorernstsson
	Node: n414 heatherpchance
	Node: n415 cale.thompson.5872
	Node: n416 ravi.patel.7549
	Node: n417 casey.carden.77
	Node: n418 SuperSpud13
	Node: n419 karen.e.depierre
	Node: n420 julie.ramhold.1
	Node: n421 stephanie.chrisley
	Node: n422 katherine.shonesy
	Node: n423 scott.amacher.3
	Node: n424 kelly.callen.52
	Node: n425 corrie.clarkson
	Node: n426 epicguo
	Node: n427 adam.creel.52
	Node: n428 DEMOL1T1ON2287
	Node: n429 rob.wilson.902604
	Node: n430 angela.goldstein.5
	Node: n431 krysta.whitecap
	Node: n432 matt.frisby.9
	Node: n433 jennie.frisby
	Node: n434 Ting.Zheng86
	Node: n435 Ace4101
	Node: n436 xaebae.piano
	Node: n437 matt.weiland.9
	Node: n438 omglas3r
	Node: n439 jonathan.bolden.92
	Node: n440 brett.simon.980
	Node: n441 will.lucas.378
	Node: n442 tackystar
	Node: n443 justin.anthony.92102
	Node: n444 corey.clifton.33
	Node: n445 asa.gilliland
	Node: n446 bnprince1
	Node: n447 alison.r.weber
	Node: n448 jacooley
	Node: n449 kelly.l.foster.5
	Node: n450 kelly.bragan.5
	Node: n451 ali.ferrell.5
	Node: n452 matt.frisby.313
	Node: n453 rachel.gabriel.9
	Node: n454 happyyeteng
	Node: n455 cole.buford.3
	Node: n456 andrew.henderson.7568
	Node: n457 maria.d.lucena.31
	Node: n458 james.nitsch.1
	Node: n459 evan.white.1656
	Node: n460 julia.cganzi
	Node: n461 penny3333
	Node: n462 anamXO
	Node: n463 ana.oprescu
	Node: n464 rafael.suarez.7
	Node: n465 ibtgriffin
	Node: n466 browne.allen
	Node: n467 brianna.ren
	Node: n468 julian.grizzard
	Node: n469 kera.dorsey
	Node: n470 steven.sheets.129
	Node: n471 laura.johnston.33
	Node: n472 dale.reese.7
	Node: n473 bettiejean.harrisrepasky
	Node: n474 alyssa.paynter1
	Node: n475 kevin.wesley.35
	Node: n476 chorlick1
	Node: n477 josh.blackmon.73
	Node: n478 pikewerker
	Node: n479 don.sanders.501
	Node: n480 seanpcouch
	Node: n481 matthew.shaper
	Node: n482 john.maxon.982
	Node: n483 els0064
	Node: n484 bradley.garrison.75
	Node: n485 brittany.king.39
	Node: n486 warren.smith.984
	Node: n487 Copey13
	Node: n488 juanita.l.owen
	Node: n489 george.preussel
	Node: n490 Arthur.J.Moore
	Node: n491 profile.php?id=78203276
	Node: n492 sreca.jovanov
	Node: n493 trentvango
	Node: n494 bisantchi

Fix Up Labels

In [6]:
labels = {nid:ndict["label"] for nid, ndict in g.nodes(data=True)}

nx.draw(g, with_labels=True, labels=labels)

plt.show()

Centrality

In [7]:
# different centrality types
centrality_pairs = [
    ("d_cent", nx.degree_centrality),
    ("c_cent", nx.closeness_centrality),
    ("b_cent", nx.betweenness_centrality),
]

# Keep track of different centralities
centrality_map = {}

# For each type of centrality, apply the node attributes
for cent_label, cent_func in centrality_pairs:
    centrality = cent_func(g)
    centrality_map[cent_label] = centrality
    nx.set_node_attributes(g, centrality, cent_label)
In [8]:
for cent_label, cent_vals in centrality_map.items():
    print(cent_label)
    tops = [(x, cent_vals[x]) for x in sorted(cent_vals, key=cent_vals.get, reverse=True)]
    
    for t in tops[:5]:
        print("\t", t, labels[t[0]])
d_cent
	 ('n0', 0.5060728744939271) m.leigh.cook
	 ('n493', 0.012145748987854251) trentvango
	 ('n239', 0.004048582995951417) geoffrey.o.babb
	 ('n369', 0.004048582995951417) richard.d.kennedy
	 ('n434', 0.004048582995951417) Ting.Zheng86
c_cent
	 ('n0', 0.5003800394000031) m.leigh.cook
	 ('n239', 0.25810116656798576) geoffrey.o.babb
	 ('n369', 0.25810116656798576) richard.d.kennedy
	 ('n434', 0.25810116656798576) Ting.Zheng86
	 ('n1', 0.2540840277887175) chris.harrington.7731
b_cent
	 ('n0', 0.26370400177382136) m.leigh.cook
	 ('n493', 0.006220692940026772) trentvango
	 ('n239', 0.0027154796024231246) geoffrey.o.babb
	 ('n369', 0.0027154796024231246) richard.d.kennedy
	 ('n434', 0.0027154796024231246) Ting.Zheng86

Exporting from NetworkX

Getting into Gephi brings up a good question.

How do we export a graph from NetworkX?

NetworkX has lots of reading and writing capabilities:

In [9]:
# For simplicity, let's use GraphML
nx.write_graphml(g, "cbuntain_fb_w_centrality.graphml")
In [ ]: