<div dir="ltr"><a href="https://www.vtk.org/doc/nightly/html/classvtkMutableDirectedGraph.html">vtkMutableDirectedGraph</a> has an API that is hopefully pretty intuitive with AddVertex, AddEdge, etc. You can also shallow-copy from the mutable graph into a DAG object, which performs a check, if it is important to verify you made a proper DAG. From the <a href="https://www.vtk.org/doc/nightly/html/classvtkDirectedAcyclicGraph.html">vtkDirectedAcyclicGraph docs</a> (I noticed some typos here, should read "DAG" instead of "tree"):<div><br></div><div>=====</div><div><div>vtkDirectedAcyclicGraph is a read-only data structure. To construct a tree, create an instance of vtkMutableDirectedGraph. Add vertices and edges with AddVertex() and AddEdge(). You may alternately start by adding a single vertex as the root then call graph->AddChild(parent) which adds a new vertex and connects the parent to the child. The tree MUST have all edges in the proper direction, from parent to child. After building the tree, call tree->CheckedShallowCopy(graph) to copy the structure into a vtkDirectedAcyclicGraph. This method will return false if the graph is an invalid tree.</div><div>=====</div></div><div><br></div><div>As for rendering in ParaView, you the following example shows how to use vtkGraphToPolyData, but this is not exposed in ParaView to my knowledge, I think you would need a plugin, or preprocess the graph into a vtkPolyData, save it, then load into ParaView.</div><div><br></div><div><a href="https://www.vtk.org/Wiki/VTK/Examples/Cxx/Graphs/GraphToPolyData">https://www.vtk.org/Wiki/VTK/Examples/Cxx/Graphs/GraphToPolyData</a><br></div><div><br></div><div>Embedding from higher-dimensional coordinates into 2D or 3D does not have a VTK implementation that I know of, though PCA in VTK may be able to be used. If you want to do layout based on edge connectivity, there are some <a href="https://www.vtk.org/doc/nightly/html/classvtkGraphLayoutStrategy.html">graph layout algorithms</a> in VTK that could get you 2D or 3D coordinates.</div><div><br></div><div>HTH,</div><div>Jeff</div></div><br><div class="gmail_quote"><div dir="ltr">On Wed, Sep 13, 2017 at 11:58 AM Andy Bauer <<a href="mailto:andy.bauer@kitware.com">andy.bauer@kitware.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi Matthieu,<div><br></div><div>There isn't a Catalyst example for graphs but it shouldn't be too hard to make. I'm not very familiar with the vtkGraph and derived classes but if I were to to try doing that I'd just see how the graph object is generated in some filter that generates one (look in the RequestData() method).</div><div><br></div><div>As for visualizing graphs in ParaView, hopefully someone else on the list can provide insight on doing that.</div><div><br></div><div>Best,</div><div>Andy</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Sep 13, 2017 at 11:38 AM, Dorier, Matthieu <span dir="ltr"><<a href="mailto:mdorier@anl.gov" target="_blank">mdorier@anl.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">




<div dir="ltr">
<div id="m_3607114068858696828m_7554870715356835752divtagdefaultwrapper" style="font-size:10pt;color:#333399;font-family:Tahoma,Geneva,sans-serif" dir="ltr">
<p>Hi,</p>
<p><br>
</p>
<p>I would like to use Catalyst to visualize a distributed directed graph. Each node of the graph is characterized by an id (not necessarily contiguous, as some nodes are added and removed during the execution) and a list of connections (ids of "friends").</p>
<p><br>
</p>
<p>The nodes can be assigned coordinates in a 2D or a 3D space.<br>
</p>
<p><br>
</p>
<p>Do you have an example of adaptor for that?</p>
<p><br>
</p>
<p>Also if I want to use coordinates in higher dimensions, would I need to project to a 3D subspace or is there a way for ParaView to figure out a layout to display the graph?</p>
<p><br>
</p>
<p>Thanks,</p>
<p><br>
</p>
<p>Matthieu<br>
</p>
</div>
</div>

<br>_______________________________________________<br>
Powered by <a href="http://www.kitware.com" rel="noreferrer" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" rel="noreferrer" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Please keep messages on-topic and check the ParaView Wiki at: <a href="http://paraview.org/Wiki/ParaView" rel="noreferrer" target="_blank">http://paraview.org/Wiki/ParaView</a><br>
<br>
Search the list archives at: <a href="http://markmail.org/search/?q=ParaView" rel="noreferrer" target="_blank">http://markmail.org/search/?q=ParaView</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://public.kitware.com/mailman/listinfo/paraview" rel="noreferrer" target="_blank">http://public.kitware.com/mailman/listinfo/paraview</a><br>
<br></blockquote></div><br></div>
_______________________________________________<br>
Powered by <a href="http://www.kitware.com" rel="noreferrer" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" rel="noreferrer" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Please keep messages on-topic and check the ParaView Wiki at: <a href="http://paraview.org/Wiki/ParaView" rel="noreferrer" target="_blank">http://paraview.org/Wiki/ParaView</a><br>
<br>
Search the list archives at: <a href="http://markmail.org/search/?q=ParaView" rel="noreferrer" target="_blank">http://markmail.org/search/?q=ParaView</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://public.kitware.com/mailman/listinfo/paraview" rel="noreferrer" target="_blank">http://public.kitware.com/mailman/listinfo/paraview</a><br>
</blockquote></div>