diff --git a/main.py b/main.py
index e5c2c6ada9f7f56e05d4e352636151ead9c301b1..d7051ee492a8a26248f0d501876e805081a5b00d 100644
--- a/main.py
+++ b/main.py
@@ -24,7 +24,8 @@ node_1 = test_graph_1.add_node(edges_in=[node_0, ])
 node_2 = test_graph_1.add_node(edges_in=[node_1, ])
 node_3 = test_graph_1.add_node(edges_in=[node_2, ])
 node_4 = test_graph_1.add_node(edges_in=[node_3, ], edges_out=[node_0, ])
-logger.info(test_graph_1.info_string())
+test_graph_1.sort_edge_count_list()
+# logger.info(test_graph_1.info_string())
 
 # Map graph to visual representation.
 mapper = data_mapping.DataMapping(test_graph_1, None)
@@ -41,6 +42,9 @@ node_1 = test_graph_2.add_node(edges_in=[node_0, ])
 node_2 = test_graph_2.add_node(edges_in=[node_1, ])
 node_3 = test_graph_2.add_node(edges_in=[node_1, node_2, ], edges_out=[node_2, ])
 node_4 = test_graph_2.add_node(edges_in=[node_3, ], edges_out=[node_0, node_2, ])
+
+# Map graph to visual representation.
+test_graph_2.sort_edge_count_list()
 mapper = data_mapping.DataMapping(test_graph_1, test_graph_2)
 mapper.draw_map()
 
diff --git a/resources/graph.py b/resources/graph.py
index 9a45de1355ba8f51306fbd6df6ba80b840396a83..34f2cb938f44e52eb10d890815689d8f3449afc7 100644
--- a/resources/graph.py
+++ b/resources/graph.py
@@ -18,8 +18,9 @@ class Graph():
     """
     def __init__(self, *args, **kwargs):
         self.name = None        # Optional name to identify graph.
-        self.nodes = {}        # Dict object of all nodes within graph.
+        self.nodes = {}         # Dict object of all nodes within graph.
         self._auto_counter = 0  # Int to count "nameless" nodes added to graph.
+        self.edge_count_list = []  # List keeping track of edges each node has.
 
         # Attempt to set name.
         try:
@@ -64,13 +65,17 @@ class Graph():
         """
         Adds new node to graph.
         """
+        # Create node.
         new_node = Node(name=name)
         if edges_in is not None or edges_out is not None:
             new_node.add_edge(edges_in, edges_out)
         if new_node.name is None:
             count_value = self.auto_count()
             new_node.identifier = count_value
+
+        # Add to node dict and edge_count list.
         self.nodes[new_node.identifier] = new_node
+        self.edge_count_list.append(new_node)
 
         return new_node
 
@@ -101,6 +106,9 @@ class Graph():
                     # Find in "edges_out" list and remove.
                     edge_node.remove_edge(edges_out=[removed_node, ])
 
+            # Remove from edge_count list.
+            self.edge_count_list.remove(removed_node)
+
             return removed_node
         except KeyError:
             logger.warning('Invalid key passed. Cannot remove node from graph.')
@@ -122,6 +130,24 @@ class Graph():
         for key, value in temp_dict.items():
             del self.nodes[key]
 
+    def sort_edge_count_list(self):
+        """
+        Sorts edge_count list.
+        """
+        # print_string = ''
+        # logger.info('List before sorting: ')
+        # for node in self.edge_count_list:
+        #     print_string += str(node.info_string() + '    ')
+        # logger.info(print_string)
+
+        self.edge_count_list = sorted(self.edge_count_list, key=lambda node: (len(node.edges_in) + len(node.edges_out)), reverse=True)
+
+        # print_string = ''
+        # logger.info('List after sorting: ')
+        # for node in self.edge_count_list:
+        #     print_string += str(node.info_string() + '    ')
+        # logger.info(print_string)
+
     def info_string(self, only_name=False, only_edges_in=False, only_edges_out=False):
         """
         Returns information about graph.
diff --git a/tests/resources/graph.py b/tests/resources/graph.py
index 8ff9ce1e8ad6aacfb470015f6ff36d09609e7ab5..64dc03d587573cba937dc0260d1a9eeb1d47ba65 100644
--- a/tests/resources/graph.py
+++ b/tests/resources/graph.py
@@ -87,6 +87,28 @@ class Graph(unittest.TestCase):
         node = self.test_graph.get_node(0)
         self.assertEqual(node.identifier, 0)
 
+    def test_edge_count(self):
+        # Test with no edges.
+        self.assertEqual(self.test_graph.edge_count_list, [])
+
+        # Test with one node.
+        node_0 = self.test_graph.add_node()
+        self.assertEqual(self.test_graph.edge_count_list, [node_0, ])
+
+        # Test multiple nodes.
+        node_1 = self.test_graph.add_node()
+        node_2 = self.test_graph.add_node(edges_in=[node_1, ], edges_out=[node_1, ])
+        node_3 = self.test_graph.add_node(edges_in=[node_2, ], edges_out=[node_1, node_2, ])
+        node_4 = self.test_graph.add_node()
+        node_5 = self.test_graph.add_node(edges_out=[node_4])
+        self.assertEqual(self.test_graph.edge_count_list, [node_0, node_1, node_2, node_3, node_4, node_5, ])
+
+        node_6 = self.test_graph.add_node()
+        self.test_graph.sort_edge_count_list()
+        self.assertEqual(self.test_graph.edge_count_list, [node_0, node_1, node_2, node_3, node_4, node_5, node_6])
+        # Note: The only way (I can find) to check that list is properly sorted is to print before and after, and
+        # manually check.
+
 
 class Node(unittest.TestCase):
     def setUp(self):