2013-10-04 71 views
-1

我使用Jung繪製圖形,輸入爲.net格式(使用txt2pajek構建它)。我想看到邊緣和輸出的權重。 請問我該怎麼做? 由於使用Jung的圖形中的權重

的代碼和.net文件格式是:

package pGraph; 
import java.awt.BorderLayout; 
import java.awt.Color; 
import java.awt.Paint; 
import java.awt.Shape; 
import java.awt.geom.AffineTransform; 
import java.awt.geom.Ellipse2D; 
import java.io.IOException; 

import javax.swing.BorderFactory; 
import javax.swing.JComboBox; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 

import org.apache.commons.collections15.FactoryUtils; 
import org.apache.commons.collections15.Transformer; 
import org.apache.commons.collections15.functors.MapTransformer; 

import com.sun.xml.internal.ws.api.server.Container; 

import pGraph.JungExample2.MyRenderer; 

import edu.uci.ics.jung.algorithms.layout.FRLayout; 
import edu.uci.ics.jung.graph.DirectedSparseGraph; 
import edu.uci.ics.jung.graph.Graph; 
import edu.uci.ics.jung.io.PajekNetReader; 
import edu.uci.ics.jung.visualization.GraphZoomScrollPane; 
import edu.uci.ics.jung.visualization.VisualizationViewer; 
import edu.uci.ics.jung.visualization.control.DefaultModalGraphMouse; 
import edu.uci.ics.jung.visualization.control.ModalGraphMouse; 
import edu.uci.ics.jung.visualization.decorators.EdgeShape; 
import edu.uci.ics.jung.visualization.decorators.ToStringLabeller; 

/** 
* A class that shows the minimal work necessary to load and visualize a graph. 
*/ 
public class D1 
{ 

    public static void main(String[] args) throws IOException 
    { 
     JFrame jf = new JFrame(); 

     PajekNetReader pnr = new PajekNetReader(FactoryUtils.instantiateFactory(Object.class)); 
     Graph g = new DirectedSparseGraph(); 

     VisualizationViewer vv = new VisualizationViewer(new FRLayout(g)); 


     vv.getRenderContext().setVertexLabelTransformer(pnr.getVertexLabeller()); 

     vv.getRenderContext().setEdgeLabelTransformer(new ToStringLabeller()); 


     pnr.load("F:\\1c\\qq.net", g);    


     DefaultModalGraphMouse gm = new DefaultModalGraphMouse(); 
     vv.setGraphMouse(gm);  


     System.out.println(g.toString()); 
     final DefaultModalGraphMouse<String, Number> graphMouse = new DefaultModalGraphMouse<String, Number>(); 
     graphMouse.setMode(ModalGraphMouse.Mode.PICKING); 
     vv.setGraphMouse(graphMouse); 

     final GraphZoomScrollPane panel = new GraphZoomScrollPane(vv); 

     jf.getContentPane().add(vv) ; 
     jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     jf.pack(); 
     jf.setVisible(true); 
      } 
} 

*頂點5

1 「t」 的

2 「B」

3 「C」

4「d」

5的 「a」

*弧

1 2 0.2

3 4 0.9

5 4 0.86

回答

0

PajekNetReader.getEdgeWeightTransformer()會給你從Pajek文件的邊緣的權重。

然後,您需要提供一個簡單的變壓器,可以將您的Transformer<E, Number>變成Transformer<E, String>,並將其傳遞給vv.getRenderContext().setEdgeLabelTransformer()。 (使用toStringLabeller沒有多大意義,因爲邊緣的對象都沒有,自己,你想要的權重。)

http://jung.sourceforge.net/doc/api/edu/uci/ics/jung/io/PajekNetReader.html