2 deleted 55 characters in body edited Dec 22 '12 at 3:10 Chip Hurst 25.5k11 gold badge6161 silver badges100100 bronze badges Not quite sure how this could handle with very large amounts of data, but maybe this is something of use. The following code I think could easily be adapted to take an input stream efficiently. Essentially I predesignate each vertices position using RandomReal, but I bet there's a way to make things look less erratic despite an arbitrary amount of vertices being allowed. Options[GraphPlotDynamic] = {VertexRenderingFunction -> (Point[#1] &)}; GraphPlotDynamic[lis:{{_, _, _, _}..}, OptionsPattern[]] := Module[{pos = Partition[RandomReal[{0, 1}, 2 Length[lis]], 2], posHash, chosenEdges, chosenVerts, vRender}, vRender = OptionValue[VertexRenderingFunction]; Set[posHash[#], pos[[#RandomReal[{0, +1}, 1]]]2]] & /@ Range[0, Length[lis] - 1]; posHash[{args__}] := posHash /@ {args}; Manipulate[ chosenEdges = Select[dynamicGraph, #[] <= t <= #[] &][[All, 1 ;; 2]]; chosenVerts = vRender[posHash[#], #] & /@ Union[Flatten[chosenEdges]]; Graphics[{ Red, Line[posHash[##]] & /@ chosenEdges, Black, chosenVerts }, PlotRange -> {{0, 1}, {0, 1}}], {t, 0, 31, 1}] ]  And here's your example (t=24, t=25): GraphPlotDynamic[dynamicGraph, VertexRenderingFunction -> (Style[Text[#2, #1], Large] &)] Not quite sure how this could handle with very large amounts of data, but maybe this is something of use. The following code I think could easily be adapted to take an input stream efficiently. Essentially I predesignate each vertices position using RandomReal, but I bet there's a way to make things look less erratic despite an arbitrary amount of vertices being allowed. Options[GraphPlotDynamic] = {VertexRenderingFunction -> (Point[#1] &)}; GraphPlotDynamic[lis:{{_, _, _, _}..}, OptionsPattern[]] := Module[{pos = Partition[RandomReal[{0, 1}, 2 Length[lis]], 2], posHash, chosenEdges, chosenVerts, vRender}, vRender = OptionValue[VertexRenderingFunction]; Set[posHash[#], pos[[# + 1]]] & /@ Range[0, Length[lis] - 1]; posHash[{args__}] := posHash /@ {args}; Manipulate[ chosenEdges = Select[dynamicGraph, #[] <= t <= #[] &][[All, 1 ;; 2]]; chosenVerts = vRender[posHash[#], #] & /@ Union[Flatten[chosenEdges]]; Graphics[{ Red, Line[posHash[##]] & /@ chosenEdges, Black, chosenVerts }, PlotRange -> {{0, 1}, {0, 1}}], {t, 0, 31, 1}] ]  And here's your example (t=24, t=25): GraphPlotDynamic[dynamicGraph, VertexRenderingFunction -> (Style[Text[#2, #1], Large] &)] Not quite sure how this could handle with very large amounts of data, but maybe this is something of use. The following code I think could easily be adapted to take an input stream efficiently. Essentially I predesignate each vertices position using RandomReal, but I bet there's a way to make things look less erratic despite an arbitrary amount of vertices being allowed. Options[GraphPlotDynamic] = {VertexRenderingFunction -> (Point[#1] &)}; GraphPlotDynamic[lis:{{_, _, _, _}..}, OptionsPattern[]] := Module[{posHash, chosenEdges, chosenVerts, vRender}, vRender = OptionValue[VertexRenderingFunction]; Set[posHash[#], RandomReal[{0, 1}, 2]] & /@ Range[0, Length[lis] - 1]; posHash[{args__}] := posHash /@ {args}; Manipulate[ chosenEdges = Select[dynamicGraph, #[] <= t <= #[] &][[All, 1 ;; 2]]; chosenVerts = vRender[posHash[#], #] & /@ Union[Flatten[chosenEdges]]; Graphics[{ Red, Line[posHash[##]] & /@ chosenEdges, Black, chosenVerts }, PlotRange -> {{0, 1}, {0, 1}}], {t, 0, 31, 1}] ]  And here's your example (t=24, t=25): GraphPlotDynamic[dynamicGraph, VertexRenderingFunction -> (Style[Text[#2, #1], Large] &)] 1 answered Dec 22 '12 at 2:46 Chip Hurst 25.5k11 gold badge6161 silver badges100100 bronze badges Not quite sure how this could handle with very large amounts of data, but maybe this is something of use. The following code I think could easily be adapted to take an input stream efficiently. Essentially I predesignate each vertices position using RandomReal, but I bet there's a way to make things look less erratic despite an arbitrary amount of vertices being allowed. Options[GraphPlotDynamic] = {VertexRenderingFunction -> (Point[#1] &)}; GraphPlotDynamic[lis:{{_, _, _, _}..}, OptionsPattern[]] := Module[{pos = Partition[RandomReal[{0, 1}, 2 Length[lis]], 2], posHash, chosenEdges, chosenVerts, vRender}, vRender = OptionValue[VertexRenderingFunction]; Set[posHash[#], pos[[# + 1]]] & /@ Range[0, Length[lis] - 1]; posHash[{args__}] := posHash /@ {args}; Manipulate[ chosenEdges = Select[dynamicGraph, #[] <= t <= #[] &][[All, 1 ;; 2]]; chosenVerts = vRender[posHash[#], #] & /@ Union[Flatten[chosenEdges]]; Graphics[{ Red, Line[posHash[##]] & /@ chosenEdges, Black, chosenVerts }, PlotRange -> {{0, 1}, {0, 1}}], {t, 0, 31, 1}] ]  And here's your example (t=24, t=25): GraphPlotDynamic[dynamicGraph, VertexRenderingFunction -> (Style[Text[#2, #1], Large] &)] 