Skip to content

Instantly share code, notes, and snippets.

@kersulis
Last active August 16, 2018 23:01
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kersulis/6297ce022f0b9b4806fa to your computer and use it in GitHub Desktop.
Save kersulis/6297ce022f0b9b4806fa to your computer and use it in GitHub Desktop.
Force-directed graph: injection shift factors
heigh: 800

This is a force-directed graph depiction of a transmission network (the RTS-96). The red line is assumed to be overheated. The purpose of the visualization is to indicate which generators would be most effective at decreasing the temperature of the overheated line.

Large circles represent nodes, and are colored according to injection shift factors. A bright blue node, for example, has a large negative shift factor with respect to the overheated line.

Small circles represent generators, and are colored according to the output of a fast temporal scanning algorithm. A bright red generator, for example, communicates that the scanning algorithm recommends a significant positive change in that generator's output in order to relieve the overheated line.

One fun little trick at work here: nodes with large shift factors are pushed upward by the force layout algorithm (see the tick function in index.html). If you don't see the red line rising to the top, try refreshing.

{"nodes":[{"name":"Node 101","isf":0.13288442768304856,"type":2},{"name":"Node 102","isf":0.13284027423291245,"type":2},{"name":"Node 103","isf":-0.3601212780982321,"type":1},{"name":"Node 104","isf":0.1301953498974112,"type":1},{"name":"Node 105","isf":0.13024135858517946,"type":1},{"name":"Node 106","isf":0.12877302875643165,"type":1},{"name":"Node 107","isf":0.1480103645835057,"type":2},{"name":"Node 108","isf":0.13952373414397615,"type":1},{"name":"Node 109","isf":0.12758162598757797,"type":1},{"name":"Node 110","isf":0.12721387812762416,"type":1},{"name":"Node 111","isf":0.054247972583130466,"type":1},{"name":"Node 112","isf":0.18517485055707308,"type":1},{"name":"Node 113","isf":0.17263493238631725,"type":3},{"name":"Node 114","isf":-0.12071807467476399,"type":2},{"name":"Node 115","isf":-0.3537755665919695,"type":2},{"name":"Node 116","isf":-0.364199811179073,"type":1},{"name":"Node 117","isf":-0.3508660728689684,"type":1},{"name":"Node 118","isf":-0.34366636486700985,"type":2},{"name":"Node 119","isf":0.5149168775814078,"type":1},{"name":"Node 120","isf":0.4088200697003373,"type":1},{"name":"Node 121","isf":-0.3367105033114465,"type":2},{"name":"Node 122","isf":-0.34490280114480854,"type":2},{"name":"Node 123","isf":0.34970527719634964,"type":2},{"name":"Node 124","isf":-0.35479928876673145,"type":1},{"name":"Node 201","isf":0.16806581797113082,"type":2},{"name":"Node 202","isf":0.16795458233322294,"type":2},{"name":"Node 203","isf":0.16961760830489653,"type":1},{"name":"Node 204","isf":0.16480533695451863,"type":1},{"name":"Node 205","isf":0.1640070956285632,"type":1},{"name":"Node 206","isf":0.16174177069048903,"type":1},{"name":"Node 207","isf":0.16151994920146853,"type":2},{"name":"Node 208","isf":0.1614304393469968,"type":1},{"name":"Node 209","isf":0.16165956809710705,"type":1},{"name":"Node 210","isf":0.1594375851830536,"type":1},{"name":"Node 211","isf":0.15895253033719883,"type":1},{"name":"Node 212","isf":0.14645287582113145,"type":1},{"name":"Node 213","isf":0.1461806827909849,"type":2},{"name":"Node 214","isf":0.17143813345536776,"type":2},{"name":"Node 215","isf":0.19215199031810717,"type":1},{"name":"Node 216","isf":0.18799060119839633,"type":2},{"name":"Node 217","isf":0.22065978843477094,"type":1},{"name":"Node 218","isf":0.2140157246355903,"type":2},{"name":"Node 219","isf":0.15936522841367515,"type":1},{"name":"Node 220","isf":0.13415958829273947,"type":1},{"name":"Node 221","isf":0.20769178399776358,"type":2},{"name":"Node 222","isf":0.2144227430308429,"type":2},{"name":"Node 223","isf":0.1200620332467008,"type":2},{"name":"Node 224","isf":0.18279801113789804,"type":1},{"name":"Node 301","isf":-0.16092011747481869,"type":2},{"name":"Node 302","isf":-0.1614620436646153,"type":2},{"name":"Node 303","isf":-0.14176467855672714,"type":1},{"name":"Node 304","isf":-0.160348925309808,"type":1},{"name":"Node 305","isf":-0.16132548999092475,"type":1},{"name":"Node 306","isf":-0.16167938369979068,"type":1},{"name":"Node 307","isf":-0.16110636831773467,"type":2},{"name":"Node 308","isf":-0.16101708765826264,"type":1},{"name":"Node 309","isf":-0.15888568761673097,"type":1},{"name":"Node 310","isf":-0.16138927840374698,"type":1},{"name":"Node 311","isf":-0.1527479143196589,"type":1},{"name":"Node 312","isf":-0.16452116364425357,"type":1},{"name":"Node 313","isf":-0.16413908297130428,"type":2},{"name":"Node 314","isf":-0.13824733259898564,"type":2},{"name":"Node 315","isf":-0.10789154822806891,"type":2},{"name":"Node 316","isf":-0.11731958366977423,"type":2},{"name":"Node 317","isf":-0.0910442952604512,"type":1},{"name":"Node 318","isf":-0.0767576033058004,"type":2},{"name":"Node 319","isf":-0.14490093833770204,"type":1},{"name":"Node 320","isf":-0.16853558213044284,"type":1},{"name":"Node 321","isf":-0.08794909545486414,"type":1},{"name":"Node 322","isf":-0.0898504281654624,"type":2},{"name":"Node 323","isf":-0.181329050946995,"type":2},{"name":"Node 324","isf":-0.12038589503324527,"type":1},{"name":"Node 325","isf":-0.19450240269468633,"type":1},{"Pinj":0.00031771641931476407,"name":"Gen 1","parent":101,"type":"gen","dev":[0.04122421025258838,0.043380361475835016,0.04561351578851447,0.047922736759403506,0.05030668002433014,0.05276357641618645]},{"Pinj":0.00031771641931476407,"name":"Gen 2","parent":101,"type":"gen","dev":[0.04122421025259114,0.043380361475837806,0.04561351578851623,0.04792273675940326,0.050306680024335235,0.052763576416187445]},{"Pinj":0.04854168573656863,"name":"Gen 3","parent":101,"type":"gen","dev":[0.041224210252591445,0.043380361475838056,0.04561351578851655,0.047922736759403554,0.05030668002433562,0.05276357641618774]},{"Pinj":0.04854168573656863,"name":"Gen 4","parent":101,"type":"gen","dev":[0.04122421025259122,0.043380361475837834,0.04561351578851627,0.04792273675940333,0.05030668002433529,0.052763576416187515]},{"Pinj":0.0003177482393555353,"name":"Gen 5","parent":102,"type":"gen","dev":[0.04121051269917153,0.04336594749883105,0.04559835980213345,0.04790681348900527,0.05028996464197233,0.05274604468175026]},{"Pinj":0.0003177482393555353,"name":"Gen 6","parent":102,"type":"gen","dev":[0.041210512699172405,0.04336594749883261,0.045598359802135766,0.04790681348900664,0.0502899646419731,0.05274604468175027]},{"Pinj":0.048631595559317925,"name":"Gen 7","parent":102,"type":"gen","dev":[0.041210512699172565,0.04336594749883271,0.045598359802135974,0.04790681348900674,0.050289964641973314,0.05274604468175054]},{"Pinj":0.048631595559317925,"name":"Gen 8","parent":102,"type":"gen","dev":[0.041210512699172246,0.04336594749883245,0.045598359802135745,0.04790681348900646,0.05028996464197304,0.05274604468175031]},{"Pinj":0.0009663834250324205,"name":"Gen 9","parent":107,"type":"gen","dev":[0.04591666978891129,0.04831825087745556,0.0508056001446624,0.053377674567437694,0.05603297675565866,0.05876953616186853]},{"Pinj":0.0009663834250324205,"name":"Gen 10","parent":107,"type":"gen","dev":[0.04591666978891276,0.04831825087745629,0.05080560014466292,0.0533776745674395,0.05603297675566048,0.05876953616186912]},{"Pinj":0.0009663834250324205,"name":"Gen 11","parent":107,"type":"gen","dev":[0.04591666978891233,0.04831825087745597,0.05080560014466249,0.05337767456743918,0.05603297675566016,0.05876953616186866]},{"Pinj":0.0011560797479642834,"name":"Gen 12","parent":113,"type":"gen","dev":[0.05355585201721347,0.05635698550482715,0.05925815647131927,0.062258148365260446,0.06535521467488437,0.06854705701164487]},{"Pinj":0.0011560797479642834,"name":"Gen 13","parent":113,"type":"gen","dev":[0.05355585201721186,0.056356985504824215,0.0592581564713174,0.06225814836525735,0.06535521467488063,0.06854705701163895]},{"Pinj":0.0005868956183825636,"name":"Gen 14","parent":113,"type":"gen","dev":[0.05355585201721219,0.05635698550482477,0.059258156471317845,0.06225814836525757,0.06535521467488063,0.06854705701163939]},{"Pinj":0.0028988430608976497,"name":"Gen 15","parent":114,"type":"gen","dev":[-0.03744989069073412,-0.03940863355393276,-0.041437329419617086,-0.04353512759234768,-0.04570080679244626,-0.04793275983048062]},{"Pinj":0.00018669670473878068,"name":"Gen 16","parent":115,"type":"gen","dev":[-0.10975039429779088,-0.115490672776561,-0.12143595504740645,-0.12758374806812078,-0.13393047276476544,-0.1404714191189207]},{"Pinj":0.00018669670473878068,"name":"Gen 17","parent":115,"type":"gen","dev":[-0.10975039429779643,-0.11549067277656058,-0.12143595504740498,-0.12758374806812564,-0.1339304727647722,-0.14047141911892763]},{"Pinj":0.00018669670473878068,"name":"Gen 18","parent":115,"type":"gen","dev":[-0.1097503942977971,-0.11549067277656147,-0.12143595504740587,-0.12758374806812675,-0.13393047276477332,-0.1404714191189283]},{"Pinj":0.00018669670473878068,"name":"Gen 19","parent":115,"type":"gen","dev":[-0.10975039429779826,-0.1154906727765613,-0.12143595504740665,-0.12758374806812703,-0.13393047276477343,-0.14047141911892813]},{"Pinj":0.00018669670473878068,"name":"Gen 20","parent":115,"type":"gen","dev":[-0.1097503942977976,-0.1154906727765607,-0.12143595504740537,-0.1275837480681267,-0.13393047276477288,-0.1404714191189278]},{"Pinj":0.288055865392896,"name":"Gen 21","parent":115,"type":"gen","dev":[-0.10975039429779815,-0.11549067277656103,-0.12143595504740592,-0.12758374806812758,-0.13393047276477343,-0.14047141911892824]},{"Pinj":0.2896423098201615,"name":"Gen 22","parent":116,"type":"gen","dev":[-0.11298426644408721,-0.11889368624396823,-0.12501415041607267,-0.13134309245897313,-0.13787682783879518,-0.14461050775314277]},{"Pinj":3.999999915343609,"name":"Gen 23","parent":118,"type":"gen","dev":[-0.10661425667648888,-0.1121905056462087,-0.11796590038709698,-0.12393801909608482,-0.13010338497192048,-0.13645742258582566]},{"Pinj":3.999999916735295,"name":"Gen 24","parent":121,"type":"gen","dev":[-0.1044563672388037,-0.10991975204637328,-0.11557825188316073,-0.1214294939637881,-0.1274700718579993,-0.13369550274442332]},{"Pinj":0.30771643627723266,"name":"Gen 25","parent":122,"type":"gen","dev":[-0.10699783138217511,-0.1125941424723298,-0.11839031581644588,-0.12438392089834527,-0.13057146840799838,-0.1369483664552411]},{"Pinj":0.30771643627723266,"name":"Gen 26","parent":122,"type":"gen","dev":[-0.10699783138217399,-0.11259414247232756,-0.11839031581644427,-0.12438392089834323,-0.13057146840799613,-0.1369483664552391]},{"Pinj":0.30771643627723266,"name":"Gen 27","parent":122,"type":"gen","dev":[-0.10699783138217465,-0.11259414247232845,-0.11839031581644494,-0.12438392089834467,-0.1305714684079975,-0.13694836645524]},{"Pinj":0.30771643627723266,"name":"Gen 28","parent":122,"type":"gen","dev":[-0.10699783138217321,-0.11259414247232734,-0.11839031581644394,-0.124383920898343,-0.13057146840799605,-0.13694836645523928]},{"Pinj":0.30771643627723266,"name":"Gen 29","parent":122,"type":"gen","dev":[-0.10699783138217377,-0.11259414247232845,-0.11839031581644388,-0.12438392089834378,-0.13057146840799683,-0.1369483664552395]},{"Pinj":0.30771643627723266,"name":"Gen 30","parent":122,"type":"gen","dev":[-0.10699783138217399,-0.11259414247232867,-0.11839031581644449,-0.12438392089834417,-0.130571468407997,-0.13694836645524017]},{"Pinj":0.30950227384822426,"name":"Gen 31","parent":123,"type":"gen","dev":[0.10848768454458779,0.11416191947364474,0.12003879956737518,0.1261158604667436,0.13238956427606885,0.13885525516704844]},{"Pinj":0.30950227384822426,"name":"Gen 32","parent":123,"type":"gen","dev":[0.10848768454458868,0.11416191947364554,0.1200387995673758,0.12611586046674395,0.13238956427606965,0.13885525516704886]},{"Pinj":0.31199810215233653,"name":"Gen 33","parent":123,"type":"gen","dev":[0.10848768454458871,0.1141619194736456,0.12003879956737586,0.12611586046674397,0.1323895642760696,0.13885525516704864]},{"Pinj":0.00032015551143673896,"name":"Gen 34","parent":201,"type":"gen","dev":[0.05213839375121054,0.05486538987257816,0.057689775789203424,0.06061036714804402,0.06362546366212385,0.06673282777411416]},{"Pinj":0.00032015551143673896,"name":"Gen 35","parent":201,"type":"gen","dev":[0.05213839375123064,0.054865389872588224,0.05768977578921943,0.06061036714805972,0.06362546366212378,0.06673282777412184]},{"Pinj":0.055454034691218186,"name":"Gen 36","parent":201,"type":"gen","dev":[0.0521383937512296,0.05486538987258713,0.057689775789218224,0.06061036714805861,0.06362546366212257,0.06673282777412075]},{"Pinj":0.055454034691218186,"name":"Gen 37","parent":201,"type":"gen","dev":[0.052138393751229986,0.05486538987258723,0.05768977578921833,0.06061036714805896,0.06362546366212268,0.06673282777412097]},{"Pinj":0.0003201852132988282,"name":"Gen 38","parent":202,"type":"gen","dev":[0.05210388555214607,0.054829076790056774,0.05765159336500858,0.06057025170788677,0.06358335265701953,0.06668866013604102]},{"Pinj":0.0003201852132988282,"name":"Gen 39","parent":202,"type":"gen","dev":[0.05210388555216582,0.05482907679005358,0.05765159336502634,0.06057025170789175,0.06358335265701404,0.06668866013604625]},{"Pinj":0.05553703104020434,"name":"Gen 40","parent":202,"type":"gen","dev":[0.052103885552166156,0.05482907679005403,0.05765159336502679,0.060570251707892195,0.06358335265701437,0.06668866013604682]},{"Pinj":0.05553703104020434,"name":"Gen 41","parent":202,"type":"gen","dev":[0.05210388555216627,0.05482907679005403,0.0576515933650269,0.06057025170789197,0.06358335265701448,0.06668866013604682]},{"Pinj":0.0009664291891838022,"name":"Gen 42","parent":207,"type":"gen","dev":[0.050107694783679824,0.05272847919022072,0.05544286023036449,0.05824969967951921,0.061147363473899485,0.06413370120514461]},{"Pinj":0.0009664291891838022,"name":"Gen 43","parent":207,"type":"gen","dev":[0.050107694783682336,0.05272847919022192,0.05544286023036573,0.05824969967952225,0.06114736347390247,0.06413370120514679]},{"Pinj":0.0009664291891838022,"name":"Gen 44","parent":207,"type":"gen","dev":[0.05010769478368255,0.05272847919022213,0.055442860230365945,0.05824969967952246,0.06114736347390268,0.064133701205147]},{"Pinj":0.0011560988090828952,"name":"Gen 45","parent":213,"type":"gen","dev":[0.04534905487409224,0.04772094798109694,0.050177549013533884,0.052717827842008846,0.05534030558689884,0.058043036060360764]},{"Pinj":0.0011560988090828952,"name":"Gen 46","parent":213,"type":"gen","dev":[0.04534905487409227,0.047720947981096606,0.05017754901353533,0.05271782784200815,0.05534030558689909,0.058043036060360764]},{"Pinj":0.0005869143689863891,"name":"Gen 47","parent":213,"type":"gen","dev":[0.045349054874092756,0.04772094798109711,0.05017754901353581,0.052717827842008645,0.05534030558689958,0.05804303606036126]},{"Pinj":0.0028988723245689752,"name":"Gen 48","parent":214,"type":"gen","dev":[0.05318457382682518,0.05596628833904915,0.05884734681613235,0.061826541140440505,0.06490213690797286,0.06807185166385743]},{"Pinj":0.00019143095454358624,"name":"Gen 49","parent":215,"type":"gen","dev":[0.05961055170540419,0.06272836434980178,0.06595752410333944,0.0692966768789276,0.07274387871458288,0.07629657137996304]},{"Pinj":0.00019143095454358624,"name":"Gen 50","parent":215,"type":"gen","dev":[0.0596105517054323,0.06272836434976355,0.0659575241033754,0.06929667687891385,0.07274387871459054,0.07629657137999338]},{"Pinj":0.00019143095454358624,"name":"Gen 51","parent":215,"type":"gen","dev":[0.05961055170543315,0.06272836434976396,0.0659575241033756,0.06929667687891404,0.07274387871459073,0.07629657137999354]},{"Pinj":0.00019143095454358624,"name":"Gen 52","parent":215,"type":"gen","dev":[0.05961055170543222,0.06272836434976349,0.0659575241033749,0.06929667687891335,0.07274387871459004,0.07629657137999306]},{"Pinj":0.00019143095454358624,"name":"Gen 53","parent":215,"type":"gen","dev":[0.05961055170543179,0.06272836434976305,0.06595752410337423,0.0692966768789127,0.07274387871458937,0.0762965713799924]},{"Pinj":0.33401404932693646,"name":"Gen 54","parent":215,"type":"gen","dev":[0.0596105517054327,0.06272836434976438,0.06595752410337534,0.0692966768789137,0.07274387871459059,0.07629657137999331]},{"Pinj":0.33806649460899424,"name":"Gen 55","parent":216,"type":"gen","dev":[0.058319580419993855,0.06136987135077021,0.06452909797343054,0.06779593552577978,0.07116848214591442,0.07464423500647399]},{"Pinj":3.9999999257196737,"name":"Gen 56","parent":218,"type":"gen","dev":[0.0663932515097665,0.06986581992480367,0.073462404917783,0.07718149832848287,0.08102093500425944,0.0849778656301714]},{"Pinj":3.999999925693986,"name":"Gen 57","parent":221,"type":"gen","dev":[0.06443140040995488,0.06780135806246435,0.07129166773280815,0.07490086582536648,0.07862685116545975,0.08246685863240799]},{"Pinj":0.3507049289314048,"name":"Gen 58","parent":222,"type":"gen","dev":[0.06651951919467447,0.06999869179258666,0.07360211682502843,0.07732828326354818,0.0811750218377747,0.08513947781390457]},{"Pinj":0.3507049289314048,"name":"Gen 59","parent":222,"type":"gen","dev":[0.06651951919467454,0.06999869179258662,0.07360211682502851,0.07732828326354778,0.08117502183777442,0.08513947781390446]},{"Pinj":0.3507049289314048,"name":"Gen 60","parent":222,"type":"gen","dev":[0.06651951919467428,0.06999869179258614,0.07360211682502804,0.07732828326354729,0.08117502183777395,0.08513947781390399]},{"Pinj":0.3507049289314048,"name":"Gen 61","parent":222,"type":"gen","dev":[0.06651951919467405,0.06999869179258636,0.07360211682502826,0.07732828326354729,0.08117502183777395,0.08513947781390399]},{"Pinj":0.3507049289314048,"name":"Gen 62","parent":222,"type":"gen","dev":[0.06651951919467448,0.06999869179258678,0.07360211682502893,0.07732828326354818,0.08117502183777439,0.08513947781390466]},{"Pinj":0.3507049289314048,"name":"Gen 63","parent":222,"type":"gen","dev":[0.06651951919467435,0.06999869179258655,0.07360211682502846,0.07732828326354757,0.08117502183777373,0.08513947781390419]},{"Pinj":0.345215143037211,"name":"Gen 64","parent":223,"type":"gen","dev":[0.03724636952717941,0.039194467616273876,0.041212138548757826,0.043298536252305064,0.0454524460842568,0.04767226958943016]},{"Pinj":0.345215143037211,"name":"Gen 65","parent":223,"type":"gen","dev":[0.037246369527179926,0.039194467616274584,0.04121213854875784,0.04329853625230562,0.04545244608425687,0.04767226958943069]},{"Pinj":0.3477301480971417,"name":"Gen 66","parent":223,"type":"gen","dev":[0.03724636952718004,0.03919446761627482,0.04121213854875805,0.04329853625230584,0.045452446084257095,0.047672269589430785]},{"Pinj":0.00031827300531483385,"name":"Gen 67","parent":301,"type":"gen","dev":[-0.04992161137019391,-0.05253266304984727,-0.055236963776144066,-0.05803337955149512,-0.06092028238046865,-0.06389552984061986]},{"Pinj":0.00031827300531483385,"name":"Gen 68","parent":301,"type":"gen","dev":[-0.04992161137334987,-0.0525326630531652,-0.05523696377963492,-0.05803337955515779,-0.060920282384317154,-0.06389552984465899]},{"Pinj":0.05012984262130593,"name":"Gen 69","parent":301,"type":"gen","dev":[-0.04992161136595898,-0.0525326630453858,-0.055236963771456316,-0.058033379546565095,-0.060920282375296154,-0.06389552983519989]},{"Pinj":0.05012984262130593,"name":"Gen 70","parent":301,"type":"gen","dev":[-0.04992161138600584,-0.05253266306648395,-0.05523696379363939,-0.05803337956987179,-0.06092028239976202,-0.06389552986085832]},{"Pinj":0.0003182608733906146,"name":"Gen 71","parent":302,"type":"gen","dev":[-0.05008973099638414,-0.05270957584236813,-0.055422983767223766,-0.0582288169544265,-0.061125441926000335,-0.06411070904451455]},{"Pinj":0.0003182608733906146,"name":"Gen 72","parent":302,"type":"gen","dev":[-0.05008973099638243,-0.05270957584236503,-0.055422983767225056,-0.05822881695442794,-0.06112544192600216,-0.06411070904451813]},{"Pinj":0.05009548094484085,"name":"Gen 73","parent":302,"type":"gen","dev":[-0.05008973099638243,-0.05270957584236492,-0.055422983767225056,-0.05822881695442794,-0.06112544192600205,-0.06411070904451813]},{"Pinj":0.05009548094484085,"name":"Gen 74","parent":302,"type":"gen","dev":[-0.05008973099638243,-0.05270957584236481,-0.055422983767224945,-0.05822881695442772,-0.06112544192600194,-0.06411070904451813]},{"Pinj":0.0009663959478532558,"name":"Gen 75","parent":307,"type":"gen","dev":[-0.04997939124534323,-0.05259346498770001,-0.05530089570428043,-0.05810054808497567,-0.06099079225010562,-0.06396948329755725]},{"Pinj":0.0009663959478532558,"name":"Gen 76","parent":307,"type":"gen","dev":[-0.04997939125676389,-0.05259346499971999,-0.055300895716917556,-0.05810054809825156,-0.060990792264044615,-0.06396948331217638]},{"Pinj":0.0009663959478532558,"name":"Gen 77","parent":307,"type":"gen","dev":[-0.049979391252872624,-0.05259346499562459,-0.05530089571261175,-0.058100548093728686,-0.06099079225929599,-0.06396948330719628]},{"Pinj":0.0011560853194336868,"name":"Gen 78","parent":313,"type":"gen","dev":[-0.050920218296682584,-0.05358350014721913,-0.05634189635165776,-0.059194250228477685,-0.062138901216659326,-0.06517366403779978]},{"Pinj":0.0011560853194336868,"name":"Gen 79","parent":313,"type":"gen","dev":[-0.050920218296100904,-0.053583500146606386,-0.056341896351013485,-0.05919425022780258,-0.06213890121594879,-0.06517366403705441]},{"Pinj":0.000586900833326871,"name":"Gen 80","parent":313,"type":"gen","dev":[-0.050920218308455376,-0.053583500159608194,-0.05634189636468517,-0.059194250242165174,-0.06213890123102615,-0.06517366405286827]},{"Pinj":0.002898861241071747,"name":"Gen 81","parent":314,"type":"gen","dev":[-0.04288792302762989,-0.04513109147481131,-0.04745437067613878,-0.049856786408216225,-0.05233694005147849,-0.054892991039355854]},{"Pinj":0.00019050982634391411,"name":"Gen 82","parent":315,"type":"gen","dev":[-0.033470768136311335,-0.03522139082181397,-0.03703453386942002,-0.038909436971735545,-0.040845008612325984,-0.04283981236871881]},{"Pinj":0.00019050982634391411,"name":"Gen 83","parent":315,"type":"gen","dev":[-0.03347076811654081,-0.035221390801011755,-0.03703453384753999,-0.03890943694872403,-0.04084500858817058,-0.042839812343395456]},{"Pinj":0.00019050982634391411,"name":"Gen 84","parent":315,"type":"gen","dev":[-0.03347076813327536,-0.035221390818618865,-0.03703453386605396,-0.03890943696817513,-0.040845008608589646,-0.04283981236481224]},{"Pinj":0.00019050982634391411,"name":"Gen 85","parent":315,"type":"gen","dev":[-0.0334707681928711,-0.03522139088133213,-0.037034533931995225,-0.03890943703745489,-0.04084500868131609,-0.04283981244109016]},{"Pinj":0.00019050982634391411,"name":"Gen 86","parent":315,"type":"gen","dev":[-0.03347076815660192,-0.03522139084316444,-0.03703453389186377,-0.038909436995291154,-0.04084500863705633,-0.04283981239466732]},{"Pinj":0.32524444561712873,"name":"Gen 87","parent":315,"type":"gen","dev":[-0.03347076814270755,-0.035221390828542795,-0.03703453387648785,-0.03890943697913698,-0.040845008620098884,-0.04283981237688204]},{"Pinj":0.32653604850151124,"name":"Gen 88","parent":316,"type":"gen","dev":[-0.0363955902951405,-0.03829919005010929,-0.040270773469949894,-0.04230951380827186,-0.044414224167201866,-0.046583342603369715]},{"Pinj":3.999999925095666,"name":"Gen 89","parent":318,"type":"gen","dev":[-0.02381220761576852,-0.02505765829303197,-0.026347588016507828,-0.027681455878444616,-0.0290584853380933,-0.03047765447716877]},{"Pinj":3.9999999247422537,"name":"Gen 90","parent":321,"type":"gen","dev":[-0.027284099929538286,-0.02871114110456041,-0.030189146506041098,-0.03171749636024401,-0.033295300904429226,-0.03492138922148946]},{"Pinj":0.34646879139689635,"name":"Gen 91","parent":322,"type":"gen","dev":[-0.027873942862028656,-0.029331834611327712,-0.03084179236024087,-0.03240318293640715,-0.03401509734170238,-0.03567633934548442]},{"Pinj":0.34646879139689635,"name":"Gen 92","parent":322,"type":"gen","dev":[-0.02787394286068204,-0.02933183460991408,-0.03084179235875189,-0.03240318293484296,-0.034015097340061494,-0.03567633934376219]},{"Pinj":0.34646879139689635,"name":"Gen 93","parent":322,"type":"gen","dev":[-0.02787394286068219,-0.029331834609912108,-0.030841792358751428,-0.03240318293484287,-0.03401509734005917,-0.03567633934376252]},{"Pinj":0.34646879139689635,"name":"Gen 94","parent":322,"type":"gen","dev":[-0.027873942860682135,-0.029331834609912052,-0.030841792358751483,-0.03240318293484293,-0.034015097340059225,-0.03567633934376255]},{"Pinj":0.34646879139689635,"name":"Gen 95","parent":322,"type":"gen","dev":[-0.027873942860682302,-0.02933183460991219,-0.030841792358751622,-0.03240318293484301,-0.03401509734005931,-0.03567633934376266]},{"Pinj":0.34646879139689635,"name":"Gen 96","parent":322,"type":"gen","dev":[-0.027873942860682357,-0.02933183460991219,-0.030841792358751622,-0.03240318293484307,-0.034015097340059364,-0.035676339343762686]},{"Pinj":0.31957551235362935,"name":"Gen 97","parent":323,"type":"gen","dev":[-0.056252994051125826,-0.059195196247152415,-0.06224247393898952,-0.06539354930810215,-0.06864658788613087,-0.07199917553470558]},{"Pinj":0.31957551235362935,"name":"Gen 98","parent":323,"type":"gen","dev":[-0.056252994051125105,-0.05919519624715148,-0.06224247393898874,-0.06539354930810147,-0.06864658788612957,-0.07199917553470468]},{"Pinj":0.3220766758958797,"name":"Gen 99","parent":323,"type":"gen","dev":[-0.056252994051124966,-0.059195196247151305,-0.06224247393898863,-0.06539354930810126,-0.06864658788612957,-0.07199917553470453]}],"links":[{"source":0,"target":1,"type":"line"},{"source":0,"target":2,"type":"line"},{"source":0,"target":4,"type":"line"},{"source":1,"target":3,"type":"line"},{"source":1,"target":5,"type":"line"},{"source":2,"target":8,"type":"line"},{"source":2,"target":23,"type":"line"},{"source":3,"target":8,"type":"line"},{"source":4,"target":9,"type":"line"},{"source":5,"target":9,"type":"line"},{"source":6,"target":7,"type":"line"},{"source":6,"target":26,"type":"line"},{"source":7,"target":8,"type":"line"},{"source":7,"target":9,"type":"line"},{"source":8,"target":10,"type":"line"},{"source":8,"target":11,"type":"line"},{"source":9,"target":10,"type":"line"},{"source":9,"target":11,"type":"line"},{"source":10,"target":12,"type":"line"},{"source":10,"target":13,"type":"line"},{"source":11,"target":12,"type":"line"},{"source":11,"target":22,"type":"line"},{"source":12,"target":22,"type":"line"},{"source":12,"target":38,"type":"line"},{"source":13,"target":15,"type":"line"},{"source":14,"target":15,"type":"line"},{"source":14,"target":20,"type":"line"},{"source":14,"target":20,"type":"line"},{"source":14,"target":23,"type":"line"},{"source":15,"target":16,"type":"line"},{"source":15,"target":18,"type":"line-overheat"},{"source":16,"target":17,"type":"line"},{"source":16,"target":21,"type":"line"},{"source":17,"target":20,"type":"line"},{"source":17,"target":20,"type":"line"},{"source":18,"target":19,"type":"line"},{"source":18,"target":19,"type":"line"},{"source":19,"target":22,"type":"line"},{"source":19,"target":22,"type":"line"},{"source":20,"target":21,"type":"line"},{"source":22,"target":40,"type":"line"},{"source":24,"target":25,"type":"line"},{"source":24,"target":26,"type":"line"},{"source":24,"target":28,"type":"line"},{"source":25,"target":27,"type":"line"},{"source":25,"target":29,"type":"line"},{"source":26,"target":32,"type":"line"},{"source":26,"target":47,"type":"line"},{"source":27,"target":32,"type":"line"},{"source":28,"target":33,"type":"line"},{"source":29,"target":33,"type":"line"},{"source":30,"target":31,"type":"line"},{"source":31,"target":32,"type":"line"},{"source":31,"target":33,"type":"line"},{"source":32,"target":34,"type":"line"},{"source":32,"target":35,"type":"line"},{"source":33,"target":34,"type":"line"},{"source":33,"target":35,"type":"line"},{"source":34,"target":36,"type":"line"},{"source":34,"target":37,"type":"line"},{"source":35,"target":36,"type":"line"},{"source":35,"target":46,"type":"line"},{"source":36,"target":46,"type":"line"},{"source":37,"target":39,"type":"line"},{"source":38,"target":39,"type":"line"},{"source":38,"target":44,"type":"line"},{"source":38,"target":44,"type":"line"},{"source":38,"target":47,"type":"line"},{"source":39,"target":40,"type":"line"},{"source":39,"target":42,"type":"line"},{"source":40,"target":41,"type":"line"},{"source":40,"target":45,"type":"line"},{"source":41,"target":44,"type":"line"},{"source":41,"target":44,"type":"line"},{"source":42,"target":43,"type":"line"},{"source":42,"target":43,"type":"line"},{"source":43,"target":46,"type":"line"},{"source":43,"target":46,"type":"line"},{"source":44,"target":45,"type":"line"},{"source":48,"target":49,"type":"line"},{"source":48,"target":50,"type":"line"},{"source":48,"target":52,"type":"line"},{"source":49,"target":51,"type":"line"},{"source":49,"target":53,"type":"line"},{"source":50,"target":56,"type":"line"},{"source":50,"target":71,"type":"line"},{"source":51,"target":56,"type":"line"},{"source":52,"target":57,"type":"line"},{"source":53,"target":57,"type":"line"},{"source":54,"target":55,"type":"line"},{"source":55,"target":56,"type":"line"},{"source":55,"target":57,"type":"line"},{"source":56,"target":58,"type":"line"},{"source":56,"target":59,"type":"line"},{"source":57,"target":58,"type":"line"},{"source":57,"target":59,"type":"line"},{"source":58,"target":60,"type":"line"},{"source":58,"target":61,"type":"line"},{"source":59,"target":60,"type":"line"},{"source":59,"target":70,"type":"line"},{"source":60,"target":70,"type":"line"},{"source":61,"target":63,"type":"line"},{"source":62,"target":63,"type":"line"},{"source":62,"target":68,"type":"line"},{"source":62,"target":68,"type":"line"},{"source":62,"target":71,"type":"line"},{"source":63,"target":64,"type":"line"},{"source":63,"target":66,"type":"line"},{"source":64,"target":65,"type":"line"},{"source":64,"target":69,"type":"line"},{"source":65,"target":68,"type":"line"},{"source":65,"target":68,"type":"line"},{"source":66,"target":67,"type":"line"},{"source":66,"target":67,"type":"line"},{"source":67,"target":70,"type":"line"},{"source":67,"target":70,"type":"line"},{"source":68,"target":69,"type":"line"},{"source":72,"target":20,"type":"line"},{"source":65,"target":46,"type":"line"},{"source":70,"target":72,"type":"line"},{"source":0,"target":73,"type":"line-gen"},{"source":0,"target":74,"type":"line-gen"},{"source":0,"target":75,"type":"line-gen"},{"source":0,"target":76,"type":"line-gen"},{"source":1,"target":77,"type":"line-gen"},{"source":1,"target":78,"type":"line-gen"},{"source":1,"target":79,"type":"line-gen"},{"source":1,"target":80,"type":"line-gen"},{"source":6,"target":81,"type":"line-gen"},{"source":6,"target":82,"type":"line-gen"},{"source":6,"target":83,"type":"line-gen"},{"source":12,"target":84,"type":"line-gen"},{"source":12,"target":85,"type":"line-gen"},{"source":12,"target":86,"type":"line-gen"},{"source":13,"target":87,"type":"line-gen"},{"source":14,"target":88,"type":"line-gen"},{"source":14,"target":89,"type":"line-gen"},{"source":14,"target":90,"type":"line-gen"},{"source":14,"target":91,"type":"line-gen"},{"source":14,"target":92,"type":"line-gen"},{"source":14,"target":93,"type":"line-gen"},{"source":15,"target":94,"type":"line-gen"},{"source":17,"target":95,"type":"line-gen"},{"source":20,"target":96,"type":"line-gen"},{"source":21,"target":97,"type":"line-gen"},{"source":21,"target":98,"type":"line-gen"},{"source":21,"target":99,"type":"line-gen"},{"source":21,"target":100,"type":"line-gen"},{"source":21,"target":101,"type":"line-gen"},{"source":21,"target":102,"type":"line-gen"},{"source":22,"target":103,"type":"line-gen"},{"source":22,"target":104,"type":"line-gen"},{"source":22,"target":105,"type":"line-gen"},{"source":24,"target":106,"type":"line-gen"},{"source":24,"target":107,"type":"line-gen"},{"source":24,"target":108,"type":"line-gen"},{"source":24,"target":109,"type":"line-gen"},{"source":25,"target":110,"type":"line-gen"},{"source":25,"target":111,"type":"line-gen"},{"source":25,"target":112,"type":"line-gen"},{"source":25,"target":113,"type":"line-gen"},{"source":30,"target":114,"type":"line-gen"},{"source":30,"target":115,"type":"line-gen"},{"source":30,"target":116,"type":"line-gen"},{"source":36,"target":117,"type":"line-gen"},{"source":36,"target":118,"type":"line-gen"},{"source":36,"target":119,"type":"line-gen"},{"source":37,"target":120,"type":"line-gen"},{"source":38,"target":121,"type":"line-gen"},{"source":38,"target":122,"type":"line-gen"},{"source":38,"target":123,"type":"line-gen"},{"source":38,"target":124,"type":"line-gen"},{"source":38,"target":125,"type":"line-gen"},{"source":38,"target":126,"type":"line-gen"},{"source":39,"target":127,"type":"line-gen"},{"source":41,"target":128,"type":"line-gen"},{"source":44,"target":129,"type":"line-gen"},{"source":45,"target":130,"type":"line-gen"},{"source":45,"target":131,"type":"line-gen"},{"source":45,"target":132,"type":"line-gen"},{"source":45,"target":133,"type":"line-gen"},{"source":45,"target":134,"type":"line-gen"},{"source":45,"target":135,"type":"line-gen"},{"source":46,"target":136,"type":"line-gen"},{"source":46,"target":137,"type":"line-gen"},{"source":46,"target":138,"type":"line-gen"},{"source":48,"target":139,"type":"line-gen"},{"source":48,"target":140,"type":"line-gen"},{"source":48,"target":141,"type":"line-gen"},{"source":48,"target":142,"type":"line-gen"},{"source":49,"target":143,"type":"line-gen"},{"source":49,"target":144,"type":"line-gen"},{"source":49,"target":145,"type":"line-gen"},{"source":49,"target":146,"type":"line-gen"},{"source":54,"target":147,"type":"line-gen"},{"source":54,"target":148,"type":"line-gen"},{"source":54,"target":149,"type":"line-gen"},{"source":60,"target":150,"type":"line-gen"},{"source":60,"target":151,"type":"line-gen"},{"source":60,"target":152,"type":"line-gen"},{"source":61,"target":153,"type":"line-gen"},{"source":62,"target":154,"type":"line-gen"},{"source":62,"target":155,"type":"line-gen"},{"source":62,"target":156,"type":"line-gen"},{"source":62,"target":157,"type":"line-gen"},{"source":62,"target":158,"type":"line-gen"},{"source":62,"target":159,"type":"line-gen"},{"source":63,"target":160,"type":"line-gen"},{"source":65,"target":161,"type":"line-gen"},{"source":68,"target":162,"type":"line-gen"},{"source":69,"target":163,"type":"line-gen"},{"source":69,"target":164,"type":"line-gen"},{"source":69,"target":165,"type":"line-gen"},{"source":69,"target":166,"type":"line-gen"},{"source":69,"target":167,"type":"line-gen"},{"source":69,"target":168,"type":"line-gen"},{"source":70,"target":169,"type":"line-gen"},{"source":70,"target":170,"type":"line-gen"},{"source":70,"target":171,"type":"line-gen"}]}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Graph</title>
<script src="//d3js.org/d3.v3.min.js"></script>
<style type="text/css">
.node {
stroke: #fff;
stroke-width: 1.5px;
}
.link {
stroke: #999;
stroke-opacity: 1;
}
</style>
</head>
<body>
<script type="text/javascript">
//Width and height
var margin = {top: 20, right: 10, bottom: 20, left: 10};
var width = 1000 - margin.left - margin.right,
height = 1000 - margin.top - margin.bottom;
var color = d3.scale.category10();
var force = d3.layout.force()
.charge(function(d) { return typeof(d.type) == "number" ? -130 : -10; })
.linkDistance(function(d) { return d.type == "line" ? 30 : 10; })
.size([width, height]);
var svg = d3.select("body").append("svg")
.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom)
.attr("transform", "translate(" + margin.left + "," + margin.top + ")");
d3.json("graph.json", function(error, graph) {
if (error) throw error;
var isf_extent = d3.extent( graph.nodes, function(d) { return d.isf; });
var isfColor = d3.scale.linear()
.domain([isf_extent[0],0,isf_extent[1]])
.range(['blue','beige','red']);
var dev_extent = d3.extent( graph.nodes, function(d) {
if (d.type == "gen") { return d.dev[0];} else return 0;
});
var devColor = d3.scale.linear()
.domain([dev_extent[0],0,dev_extent[1]])
.range(['blue', 'beige', 'red']);
force
.nodes(graph.nodes)
.links(graph.links)
.start();
var link = svg.selectAll(".link")
.data(graph.links)
.enter()
.append("line")
.attr("class", "link")
.style("stroke", function(d) { return lineColor(d); });
var node = svg.selectAll(".node")
.data(graph.nodes)
.enter()
.append("circle")
.attr("class", "node")
.attr("r", function(d) { return nodeSize(d); })
.style("fill", function(d) {return nodeColor(d); })
.call(force.drag);
node.append("title")
.text(function(d) { return d.name; });
force.on("tick", tick);
function tick(e) {
link
.attr({
x1: function(d) { return d.source.x; },
y1: function(d) { return d.source.y; },
x2: function(d) { return d.target.x; },
y2: function(d) { return d.target.y; }
});
node
.each(function(d) {
if (d.isf) {
d.y -= Math.abs(d.isf)*80*e.alpha;
d.x -= d.isf*40*e.alpha;
}
})
.attr({
cx: function(d) { return d.x; },
cy: function(d) { return d.y; }
});
}
function nodeColor(d) {
if (typeof(d.type) == "number")
return isfColor(d.isf);
else
return devColor(d.dev[0]);
}
});
function lineColor(d) {
switch (d.type) {
case "line":
return "#ccc";
break;
case "line-gen":
return "#ddd";
break;
case "line-overheat":
return "red";
break;
default:
return "blue";
break;
}
}
function nodeSize(d) {
return (typeof(d.type) == "number") ? 7
: (d.type == "gen") ? 3
: 10;
}
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment