[phpBB Debug] PHP Warning: in file [ROOT]/phpbb/session.php on line 583: sizeof(): Parameter must be an array or an object that implements Countable
[phpBB Debug] PHP Warning: in file [ROOT]/phpbb/session.php on line 639: sizeof(): Parameter must be an array or an object that implements Countable
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4516: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3262)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4516: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3262)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4516: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3262)
Gephi forums •Rendering a new graph
Page 1 of 1

Rendering a new graph

Posted: 15 Jul 2013 00:53
by lmhunter7907
I'm including both code and output in this post. What I'm doing is building a directed graph manually and then attempting to display that graph in a preview frame. What happens is that when the gephi builder is instantiated a new directed graph is created. After the graph is the add edge method is called to add a series of gephi node objects to the graph. After the nodes are added the edges are added.

Code: Select all

public class GephiBuilder {
  
    ProjectController pc;
    Workspace ws;
    GraphModel gm;
    DirectedGraph directedGraph;
    DynamicGraph dynamicGraph;
    
    static Logger logger = Logger.getLogger(GephiBuilder.class);
    /**
     *
     */
    public GephiBuilder() { }
    
    /**
     *
     */
    public void newGraph() {
        
        logger.info("Creating new gephi objects.");
        
        pc = Lookup.getDefault().lookup(ProjectController.class);
        pc.newProject();
        
        ws = pc.getCurrentWorkspace();
        gm = Lookup.getDefault().lookup(GraphController.class).getModel();
        
        logger.info("Creating a directed graph.");
        directedGraph = gm.getDirectedGraph();
        
    }
    
    /**
     *
     */
    public void addNode(String id, String label) {
        
        logger.info("Adding a node.  Id:  " + id + "  Label:  " + label);
        Node n = gm.factory().newNode(id);
        n.getNodeData().setLabel(label);
        n.getNodeData().setSize((float) 2.5);
        

        directedGraph.addNode(n);
    }
    
    public void AddEdge(String startNodeId, 
            String endNodeId, float weight, 
            boolean directed) throws MissingGephiNodeExcpetion {
        
        //Check to make sure that nodes have been created.  Error if true
        if(!nodeExists(startNodeId)) {
            throw new 
                    MissingGephiNodeExcpetion("Node " + startNodeId + " was not found in the graph.");
        }
        
        if(!nodeExists(endNodeId)) {
            throw new 
                    MissingGephiNodeExcpetion("Node " + endNodeId + " was not found in the graph.");
        }
        
        Node start = directedGraph.getNode(startNodeId);
        Node end = directedGraph.getNode(endNodeId);
        
        logger.info("Adding an edge.");
        logger.info("Edge start: " + start.getId() + " end: " + end.getId());
        addEdge(start, end, weight, directed);
    }
    
    /**
     *
     */
    public void addEdge(Node start, Node end, float weight, boolean directed) {
                
        Edge e = gm.factory().newEdge(start, end, weight, directed);
        directedGraph.addEdge(e);
            
    }
    
    /**
     *
     */
    public void buildGraph() {
        
       //DynamicModel dynamicModel = Lookup.getDefault().lookup(DynamicController.class).getModel();
       //dynamicGraph = new DynamicGraph();
        
    }
    
    public File exportGraph() {
        File retvalue = new File("io_gexf.gexf");
        ExportController ec = Lookup.getDefault().lookup(ExportController.class);
        GraphExporter exporter = (GraphExporter) ec.getExporter("gexf"); 
        
        try {
            ec.exportFile(retvalue);
            return retvalue;
            
        } catch (IOException ex) {
            return null;
        }
    } 
    
    /**
     *
     */
    public void renderGraph() {
        
        ImportController ic = Lookup.getDefault().lookup(ImportController.class);
        Container container = null;
        
        try{
            container = ic.importFile(exportGraph());
        }
        catch(Exception ex) {
            return;
        }
        
        ic.process(container, new DefaultProcessor(), ws);

        //Preview configuration
        PreviewController previewController = Lookup.getDefault().lookup(PreviewController.class);
        PreviewModel previewModel = previewController.getModel();
        previewModel.getProperties().putValue(PreviewProperty.SHOW_NODE_LABELS, Boolean.TRUE);
        previewModel.getProperties().putValue(PreviewProperty.NODE_LABEL_COLOR, new DependantOriginalColor(Color.WHITE));
        previewModel.getProperties().putValue(PreviewProperty.EDGE_CURVED, Boolean.FALSE);
        previewModel.getProperties().putValue(PreviewProperty.EDGE_OPACITY, 50);
        previewModel.getProperties().putValue(PreviewProperty.EDGE_RADIUS, 10f);
        previewModel.getProperties().putValue(PreviewProperty.BACKGROUND_COLOR, Color.BLACK);
        previewController.refreshPreview();

        //New Processing target, get the PApplet
        ProcessingTarget target = (ProcessingTarget) previewController.getRenderTarget(RenderTarget.PROCESSING_TARGET);
        PApplet applet = target.getApplet();
        applet.init();

        //Refresh the preview and reset the zoom
        previewController.render(target);
        target.refresh();
        target.resetZoom();

        //Add the applet to a JFrame and display
        JFrame frame = new JFrame("Test Preview");
        frame.setLayout(new BorderLayout());
        
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(applet, BorderLayout.CENTER);
        
        frame.pack();
        frame.setVisible(true);
        
    }
    
    private boolean nodeExists(String nodeId) {
        
        if(directedGraph.getNode(nodeId) != null)
            return true;
        else
            return false;
        
    }
}
Once all of the nodes and edges have been added, the graph is exported to a gexf file which is then loaded into a container and displayed in a preview window. I checked the output file by attempting to open in gephi but the nodes and edges didn't appear there either. So, I'm left with no idea as why I can't seem the graph. I'm hoping that someone here will be able to provide me with some insight into what is going on. I've put the output file below.

Code: Select all

<?xml version="1.0" encoding="UTF-8"?>
<gexf xmlns="http://www.gexf.net/1.2draft" version="1.2" xmlns:viz="http://www.gexf.net/1.2draft/viz" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.gexf.net/1.2draft http://www.gexf.net/1.2draft/gexf.xsd">
  <meta lastmodifieddate="2013-07-14">
    <creator>Gephi 0.8.1</creator>
    <description></description>
  </meta>
  <graph defaultedgetype="directed" mode="static">
    <nodes>
      <node id="1.2.1" label="Test 2.1">
        <attvalues></attvalues>
        <viz:size value="2.5"></viz:size>
        <viz:position x="221.06403" y="311.56934" z="0.0"></viz:position>
        <viz:color r="153" g="153" b="153"></viz:color>
      </node>
      <node id="1.2.2" label="Test 2.2">
        <attvalues></attvalues>
        <viz:size value="2.5"></viz:size>
        <viz:position x="332.10828" y="243.84601" z="0.0"></viz:position>
        <viz:color r="153" g="153" b="153"></viz:color>
      </node>
      <node id="1.0" label="Test">
        <attvalues></attvalues>
        <viz:size value="2.5"></viz:size>
        <viz:position x="-259.47906" y="159.45837" z="0.0"></viz:position>
        <viz:color r="153" g="153" b="153"></viz:color>
      </node>
      <node id="1.4" label="Test 4">
        <attvalues></attvalues>
        <viz:size value="2.5"></viz:size>
        <viz:position x="-308.87735" y="-52.75769" z="0.0"></viz:position>
        <viz:color r="153" g="153" b="153"></viz:color>
      </node>
      <node id="1.3" label="Test 3">
        <attvalues></attvalues>
        <viz:size value="2.5"></viz:size>
        <viz:position x="397.72437" y="129.328" z="0.0"></viz:position>
        <viz:color r="153" g="153" b="153"></viz:color>
      </node>
      <node id="1.2" label="Test 2">
        <attvalues></attvalues>
        <viz:size value="2.5"></viz:size>
        <viz:position x="-208.681" y="-37.868225" z="0.0"></viz:position>
        <viz:color r="153" g="153" b="153"></viz:color>
      </node>
      <node id="1.1" label="Test 1">
        <attvalues></attvalues>
        <viz:size value="2.5"></viz:size>
        <viz:position x="505.15796" y="54.056763" z="0.0"></viz:position>
        <viz:color r="153" g="153" b="153"></viz:color>
      </node>
    </nodes>
    <edges>
      <edge source="1.0" target="1.4">
        <attvalues></attvalues>
      </edge>
      <edge source="1.0" target="1.3">
        <attvalues></attvalues>
      </edge>
      <edge source="1.0" target="1.2">
        <attvalues></attvalues>
      </edge>
      <edge source="1.0" target="1.1">
        <attvalues></attvalues>
      </edge>
      <edge source="1.2" target="1.2.1">
        <attvalues></attvalues>
      </edge>
      <edge source="1.2" target="1.2.2">
        <attvalues></attvalues>
      </edge>
    </edges>
  </graph>
</gexf>

Re: Rendering a new graph

Posted: 15 Jul 2013 01:29
by lmhunter7907
Just a quick addendum. When I export the graph from Gephi to a PDF file, the nodes are displayed. I'm not sure what this means though, other than the gexf file isn't corrupt.

Re: Rendering a new graph

Posted: 24 Jul 2013 18:47
by eduramiba
Hi,
Are you able to see other graphs?
Does the graph show in Preview?
If it only does not work in Overview,you can try to update your graphic drivers.

Eduardo

Re: Rendering a new graph

Posted: 29 Nov 2013 17:15
by imenMegd
hello,

I have the same problem,
did you find a solution?

thanks