diff options
Diffstat (limited to 'src/Chapter4/graph/visualization')
-rw-r--r-- | src/Chapter4/graph/visualization/SimpleGraphViewer.java | 86 |
1 files changed, 0 insertions, 86 deletions
diff --git a/src/Chapter4/graph/visualization/SimpleGraphViewer.java b/src/Chapter4/graph/visualization/SimpleGraphViewer.java deleted file mode 100644 index 7cb46e4..0000000 --- a/src/Chapter4/graph/visualization/SimpleGraphViewer.java +++ /dev/null @@ -1,86 +0,0 @@ -package chapter4.graph.visualization; - -import Chapter4.util.TweetFileToGraph; -import java.awt.Dimension; -import java.awt.Shape; -import java.awt.geom.Ellipse2D; -import java.io.File; - -import javax.swing.JFrame; - -import org.apache.commons.collections15.Transformer; -import GraphElements.RetweetEdge; -import GraphElements.UserNode; -import edu.uci.ics.jung.algorithms.layout.KKLayout; -import edu.uci.ics.jung.algorithms.layout.Layout; -import edu.uci.ics.jung.algorithms.scoring.EigenvectorCentrality; -import edu.uci.ics.jung.graph.DirectedGraph; -import edu.uci.ics.jung.visualization.BasicVisualizationServer; - -public class SimpleGraphViewer { - public static void main(String[] args){ - - File tweetFile; - - if(args.length > 0){ - tweetFile = new File(args[0]); - } - else{ - tweetFile = new File("synthetic_retweet_network.json"); - } - - DirectedGraph<UserNode, RetweetEdge> retweetGraph = TweetFileToGraph.getRetweetNetwork(tweetFile); - - /* - * Converts a node to its string representation - */ - Transformer<UserNode, String> stringer = new Transformer<UserNode, String>(){ - public String transform(UserNode n){ - return n.toString(); - } - }; - - /* - * Calculate the centrality - */ - //calculate the betweenness centrality -// final InDegreeScorer<UserNode> centralityScore = new InDegreeScorer<UserNode>(retweetGraph); -// final BetweennessCentrality<UserNode, RetweetEdge> centralityScore = new BetweennessCentrality<UserNode, RetweetEdge>(retweetGraph); -// final PageRank<UserNode, RetweetEdge> centralityScore = new PageRank<UserNode, RetweetEdge>(retweetGraph, 0.85); - final EigenvectorCentrality<UserNode, RetweetEdge> centralityScore = new EigenvectorCentrality<UserNode, RetweetEdge>(retweetGraph); - centralityScore.evaluate(); - - double centralityMax = 0.0f; - for(UserNode node : retweetGraph.getVertices()){ - centralityMax = Math.max(centralityMax, centralityScore.getVertexScore(node)); - } - final double centralityMaxFinal = centralityMax; - - /* - * Sizes a node by some centrality measure - */ - Transformer<UserNode, Shape> shaper = new Transformer<UserNode, Shape>(){ - public Shape transform(UserNode n){ - System.out.println("User: " + n.getUsername() + " Cent: " + centralityScore.getVertexScore(n) + " Max: " + centralityMaxFinal); - double radius = 50 * (centralityScore.getVertexScore(n)) / centralityMaxFinal; - radius = Math.max(radius, 5.0f); - float fRadius = (float) radius; - return new Ellipse2D.Float(-fRadius/2, -fRadius/2, fRadius, fRadius); - } - }; - - Layout<UserNode, RetweetEdge> layout = new KKLayout<UserNode, RetweetEdge>(retweetGraph); - layout.setSize(new Dimension(500, 500)); - - BasicVisualizationServer<UserNode, RetweetEdge> vv = new BasicVisualizationServer<UserNode, RetweetEdge>(layout); - vv.setPreferredSize(new Dimension(550, 550)); - vv.getRenderContext().setVertexLabelTransformer(stringer); - vv.getRenderContext().setVertexShapeTransformer(shaper); - - JFrame jframe = new JFrame("Simple Graph View"); - jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - jframe.getContentPane().add(vv); - jframe.pack(); - jframe.setVisible(true); - } -} |