{"id":1713,"date":"2025-02-07T07:02:23","date_gmt":"2025-02-07T07:02:23","guid":{"rendered":"https:\/\/mailitics.com\/index.php\/2025\/02\/07\/how-to-create-network-graph-visualizations-in-microsoft-powerbi\/"},"modified":"2025-02-07T07:02:23","modified_gmt":"2025-02-07T07:02:23","slug":"how-to-create-network-graph-visualizations-in-microsoft-powerbi","status":"publish","type":"post","link":"https:\/\/mailitics.com\/index.php\/2025\/02\/07\/how-to-create-network-graph-visualizations-in-microsoft-powerbi\/","title":{"rendered":"How to Create Network Graph Visualizations in Microsoft PowerBI"},"content":{"rendered":"<p>    How to Create Network Graph Visualizations in Microsoft PowerBI<br \/>\n \t<BR><br \/>\n<BR><\/BR><br \/>\n    <!-- no image --><br \/>\n \t<BR><br \/>\n<BR><\/BR><\/p>\n<div>\n<p class=\"wp-block-paragraph\">Microsoft PowerBI is a one of the most popular <a href=\"https:\/\/towardsdatascience.com\/tag\/business-intelligence\/\" title=\"Business Intelligence\">Business Intelligence<\/a> (BI) tools, and while it has all the features you need to create dynamic analytic reporting for stakeholders across the business, creating some advanced data visualizations is more challenging.<\/p>\n<p class=\"wp-block-paragraph\">This article will walk through how to create large network graph visualizations in Microsoft PowerBI to enable dynamic and interactive exploration of interconnected datasets such as supply chain networks, financial transactions, and much more.<\/p>\n<p class=\"wp-block-paragraph\">But before we do that, let\u2019s take a look at some quick foundations of network graphs.\u00a0<\/p>\n<h2 class=\"wp-block-heading\">Network Graph Foundations<\/h2>\n<p class=\"wp-block-paragraph\">Data for network graphs, referred to as \u201cgraph data\u201d is data formatted in node and edge format. Nodes represent discrete things and edges represent the relationships between nodes.<\/p>\n<figure class=\"wp-block-image size-full\"><img data-recalc-dims=\"1\" data-dominant-color=\"2f74c0\" data-has-transparency=\"true\" style=\"--dominant-color: #2f74c0;\" fetchpriority=\"high\" decoding=\"async\" width=\"800\" height=\"800\" src=\"https:\/\/i0.wp.com\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_CssLbNstqEghXxw3ZlUl-w.png?resize=800%2C800&#038;ssl=1\" alt=\"\" class=\"wp-image-597520 has-transparency\" srcset=\"https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_CssLbNstqEghXxw3ZlUl-w.png 800w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_CssLbNstqEghXxw3ZlUl-w-300x300.png 300w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_CssLbNstqEghXxw3ZlUl-w-150x150.png 150w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_CssLbNstqEghXxw3ZlUl-w-768x768.png 768w\" sizes=\"(max-width: 800px) 100vw, 800px\"><figcaption class=\"wp-element-caption\">Source: Author<\/figcaption><\/figure>\n<p class=\"wp-block-paragraph\">Let\u2019s take a simple example of an online social network, which can be represented in graph format.\u00a0<\/p>\n<p class=\"wp-block-paragraph\">Nodes refer to profiles, while edges refer to following status.\u00a0<\/p>\n<p class=\"wp-block-paragraph\">A simple network of 3 profiles might end up looking like this:<\/p>\n<figure class=\"wp-block-image size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" data-dominant-color=\"2f6bb7\" data-has-transparency=\"true\" style=\"--dominant-color: #2f6bb7;\" decoding=\"async\" width=\"800\" height=\"800\" src=\"https:\/\/i0.wp.com\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_BYMkRSHpgQEB5qVOLJtdIg.png?resize=800%2C800&#038;ssl=1\" alt=\"\" class=\"wp-image-597522 has-transparency\" srcset=\"https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_BYMkRSHpgQEB5qVOLJtdIg.png 800w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_BYMkRSHpgQEB5qVOLJtdIg-300x300.png 300w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_BYMkRSHpgQEB5qVOLJtdIg-150x150.png 150w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_BYMkRSHpgQEB5qVOLJtdIg-768x768.png 768w\" sizes=\"(max-width: 800px) 100vw, 800px\"><figcaption class=\"wp-element-caption\">Source: Author<\/figcaption><\/figure>\n<p class=\"wp-block-paragraph\">When visualizing network graphs, we can embed additional information about nodes and edges in various ways, such as but not limited to:<\/p>\n<ol class=\"wp-block-list\">\n<li class=\"wp-block-list-item\">Node size<\/li>\n<li class=\"wp-block-list-item\">Edge size<\/li>\n<li class=\"wp-block-list-item\">Node color<\/li>\n<li class=\"wp-block-list-item\">Edge color<\/li>\n<li class=\"wp-block-list-item\">Labels<\/li>\n<\/ol>\n<h2 class=\"wp-block-heading\">Structuring Network\u00a0Data<\/h2>\n<p class=\"wp-block-paragraph\">So now that you know the basic building blocks of a network graph, how do you structure and transform your dataset?<\/p>\n<h3 class=\"wp-block-heading\">Graph Data is Everywhere<\/h3>\n<p class=\"wp-block-paragraph\">While you might be thinking, \u201cwe only have relational data where I\u2019m at\u201d, that\u2019s often not the case. In fact, lots of relational datasets can be visualized as a network graph.<\/p>\n<p class=\"wp-block-paragraph\">Let\u2019s take a simple sales table as an example with columns for product name, customer name, and quantity.\u00a0<\/p>\n<figure class=\"wp-block-image size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" data-dominant-color=\"c3cefd\" data-has-transparency=\"true\" style=\"--dominant-color: #c3cefd;\" decoding=\"async\" width=\"800\" height=\"800\" src=\"https:\/\/i0.wp.com\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_QRXPIHJl-LAkOWK3tJK_Zw.png?resize=800%2C800&#038;ssl=1\" alt=\"\" class=\"wp-image-597523 has-transparency\" srcset=\"https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_QRXPIHJl-LAkOWK3tJK_Zw.png 800w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_QRXPIHJl-LAkOWK3tJK_Zw-300x300.png 300w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_QRXPIHJl-LAkOWK3tJK_Zw-150x150.png 150w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_QRXPIHJl-LAkOWK3tJK_Zw-768x768.png 768w\" sizes=\"(max-width: 800px) 100vw, 800px\"><figcaption class=\"wp-element-caption\">Source: Author<\/figcaption><\/figure>\n<p class=\"wp-block-paragraph\">We can represent this same sales table as a network graph by representing both product name as the node type \u201cproduct\u201d, customer name as the node type \u201ccustomer\u201d, and each row as the edge \u201cPurchased\u201d.<\/p>\n<p class=\"wp-block-paragraph\">Visualized as a network graph, this might look something like:<\/p>\n<figure class=\"wp-block-image size-full\"><img data-recalc-dims=\"1\" data-dominant-color=\"816185\" data-has-transparency=\"true\" style=\"--dominant-color: #816185;\" loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"800\" src=\"https:\/\/i0.wp.com\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_vbRVsNI2V6N9J6ig4jMObg.png?resize=800%2C800&#038;ssl=1\" alt=\"\" class=\"wp-image-597524 has-transparency\" srcset=\"https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_vbRVsNI2V6N9J6ig4jMObg.png 800w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_vbRVsNI2V6N9J6ig4jMObg-300x300.png 300w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_vbRVsNI2V6N9J6ig4jMObg-150x150.png 150w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_vbRVsNI2V6N9J6ig4jMObg-768x768.png 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\"><figcaption class=\"wp-element-caption\">Source: Author<\/figcaption><\/figure>\n<h3 class=\"wp-block-heading\">Graph Data\u00a0Formats<\/h3>\n<p class=\"wp-block-paragraph\">There are a few ways this data is structured, such as but not limited to:<\/p>\n<ol class=\"wp-block-list\">\n<li class=\"wp-block-list-item\">Node &amp; Edge Lists (Often in\u00a0.csv format)<\/li>\n<li class=\"wp-block-list-item\">Graph Databases (Such as Neo4j)<\/li>\n<li class=\"wp-block-list-item\">Graph Files (such as GraphML or GEXF)<\/li>\n<\/ol>\n<p class=\"wp-block-paragraph\">But in this article, we will be using a combined node and edge list into a single tabular dataset due to the requirements of making network graphs within Microsoft PowerBI.\u00a0<\/p>\n<h3 class=\"wp-block-heading\">Mapping Your\u00a0Data<\/h3>\n<p class=\"wp-block-paragraph\">You\u2019ll need to map your data to the following tabular format with each record representing an edge:<\/p>\n<ol class=\"wp-block-list\">\n<li class=\"wp-block-list-item\">Source Node (Required) -&gt; This is a unique identifier of the starting node of the edge (for example, Customer ID)<\/li>\n<li class=\"wp-block-list-item\">Target Node (Required) -&gt; This is a unique identifier of the ending node of the edge (for example, Product ID)<\/li>\n<li class=\"wp-block-list-item\">Source Color -&gt; This is a category identifier for the source node (for example, Customer Type)<\/li>\n<li class=\"wp-block-list-item\">Target Color -&gt; This is a category identifier for the target node (for example, Product Category)<\/li>\n<li class=\"wp-block-list-item\">Link Color -&gt; This is a category identifier for the edge (for example, Sales Channel)<\/li>\n<\/ol>\n<figure class=\"wp-block-image size-full\"><img data-recalc-dims=\"1\" data-dominant-color=\"c4cefd\" data-has-transparency=\"true\" style=\"--dominant-color: #c4cefd;\" loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"800\" src=\"https:\/\/i0.wp.com\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_sRheWX6vj_hXJCuLftvgag.png?resize=800%2C800&#038;ssl=1\" alt=\"\" class=\"wp-image-597525 has-transparency\" srcset=\"https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_sRheWX6vj_hXJCuLftvgag.png 800w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_sRheWX6vj_hXJCuLftvgag-300x300.png 300w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_sRheWX6vj_hXJCuLftvgag-150x150.png 150w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_sRheWX6vj_hXJCuLftvgag-768x768.png 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\"><figcaption class=\"wp-element-caption\">Source: Author<\/figcaption><\/figure>\n<h2 class=\"wp-block-heading\">Creating the Network Graph Visualization<\/h2>\n<p class=\"wp-block-paragraph\">Now that we have our data mapped, we can create the network graph visualization.\u00a0<\/p>\n<p class=\"wp-block-paragraph\">While Microsoft doesn\u2019t include a network visual in the default PowerBI visuals, we can access the visual marketplace to download third-party visuals.<\/p>\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" data-dominant-color=\"cdcdcd\" data-has-transparency=\"true\" style=\"--dominant-color: #cdcdcd;\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"577\" src=\"https:\/\/i0.wp.com\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_Um1_cCrD4-7Deo6KK7-tgA-1024x577.png?resize=1024%2C577&#038;ssl=1\" alt=\"\" class=\"wp-image-597526 has-transparency\" srcset=\"https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_Um1_cCrD4-7Deo6KK7-tgA-1024x577.png 1024w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_Um1_cCrD4-7Deo6KK7-tgA-300x169.png 300w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_Um1_cCrD4-7Deo6KK7-tgA-768x433.png 768w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_Um1_cCrD4-7Deo6KK7-tgA.png 1116w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\"><figcaption class=\"wp-element-caption\">Source: Author<\/figcaption><\/figure>\n<p class=\"wp-block-paragraph\">For this article, we will be using the visual \u201cAstra\u201d, which lets you create large-scale network graphs with plenty of customization options.<\/p>\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" data-dominant-color=\"f6f5f5\" data-has-transparency=\"true\" style=\"--dominant-color: #f6f5f5;\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"578\" src=\"https:\/\/i0.wp.com\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_WncuIt5vZk9d-q7pJZ7i8w-1024x578.png?resize=1024%2C578&#038;ssl=1\" alt=\"\" class=\"wp-image-597527 has-transparency\" srcset=\"https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_WncuIt5vZk9d-q7pJZ7i8w-1024x578.png 1024w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_WncuIt5vZk9d-q7pJZ7i8w-300x169.png 300w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_WncuIt5vZk9d-q7pJZ7i8w-768x433.png 768w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_WncuIt5vZk9d-q7pJZ7i8w-1536x867.png 1536w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_WncuIt5vZk9d-q7pJZ7i8w.png 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\"><figcaption class=\"wp-element-caption\">Source: Author<\/figcaption><\/figure>\n<p class=\"wp-block-paragraph\">Once you have it installed, it will be in your visual library.<\/p>\n<figure class=\"wp-block-image size-full\"><img data-recalc-dims=\"1\" data-dominant-color=\"808182\" data-has-transparency=\"true\" style=\"--dominant-color: #808182;\" loading=\"lazy\" decoding=\"async\" width=\"391\" height=\"594\" src=\"https:\/\/i0.wp.com\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_eGNCknRv-Kvx54h7NQjodQ.png?resize=391%2C594&#038;ssl=1\" alt=\"\" class=\"wp-image-597528 has-transparency\" srcset=\"https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_eGNCknRv-Kvx54h7NQjodQ.png 391w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_eGNCknRv-Kvx54h7NQjodQ-197x300.png 197w\" sizes=\"auto, (max-width: 391px) 100vw, 391px\"><figcaption class=\"wp-element-caption\">Source: Author<\/figcaption><\/figure>\n<p class=\"wp-block-paragraph\">Drag the visual onto your canvas, select it, and note the values required (which we mapped earlier). The visual also has options to pass x and y coordinates as well as custom labels, however we won\u2019t use those options in this article.<\/p>\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" data-dominant-color=\"bcbbbc\" data-has-transparency=\"true\" style=\"--dominant-color: #bcbbbc;\" loading=\"lazy\" decoding=\"async\" width=\"584\" height=\"1024\" src=\"https:\/\/i0.wp.com\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_rwVVS18MG1QOpnJeTby1tQ-584x1024.png?resize=584%2C1024&#038;ssl=1\" alt=\"\" class=\"wp-image-597529 has-transparency\" srcset=\"https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_rwVVS18MG1QOpnJeTby1tQ-584x1024.png 584w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_rwVVS18MG1QOpnJeTby1tQ-171x300.png 171w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_rwVVS18MG1QOpnJeTby1tQ.png 687w\" sizes=\"auto, (max-width: 584px) 100vw, 584px\"><figcaption class=\"wp-element-caption\">Source: Author<\/figcaption><\/figure>\n<p class=\"wp-block-paragraph\">The only required values are \u201cSource Node\u201d and \u201cTarget Node\u201d so let\u2019s start there. Drag the columns you mapped to those nodes from the data pane.<\/p>\n<figure class=\"wp-block-image size-full\"><img data-recalc-dims=\"1\" data-dominant-color=\"1d1e1e\" data-has-transparency=\"true\" style=\"--dominant-color: #1d1e1e;\" loading=\"lazy\" decoding=\"async\" width=\"558\" height=\"486\" src=\"https:\/\/i0.wp.com\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_zsAxhzeNvwxpeemQYxXHnw.png?resize=558%2C486&#038;ssl=1\" alt=\"\" class=\"wp-image-597530 has-transparency\" srcset=\"https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_zsAxhzeNvwxpeemQYxXHnw.png 558w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_zsAxhzeNvwxpeemQYxXHnw-300x261.png 300w\" sizes=\"auto, (max-width: 558px) 100vw, 558px\"><figcaption class=\"wp-element-caption\">Source: Author<\/figcaption><\/figure>\n<p class=\"wp-block-paragraph\">You\u2019ll notice the visual graphs our nodes and edges, however, it isn\u2019t looking so great. We\u2019ll need to change some of the simulation settings.<\/p>\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" data-dominant-color=\"f4eeef\" data-has-transparency=\"true\" style=\"--dominant-color: #f4eeef;\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"577\" src=\"https:\/\/i0.wp.com\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_w5crWPwlYFWcF3F82pcdjw-1024x577.png?resize=1024%2C577&#038;ssl=1\" alt=\"\" class=\"wp-image-597531 has-transparency\" srcset=\"https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_w5crWPwlYFWcF3F82pcdjw-1024x577.png 1024w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_w5crWPwlYFWcF3F82pcdjw-300x169.png 300w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_w5crWPwlYFWcF3F82pcdjw-768x432.png 768w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_w5crWPwlYFWcF3F82pcdjw-1536x865.png 1536w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_w5crWPwlYFWcF3F82pcdjw.png 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\"><figcaption class=\"wp-element-caption\">Source: Author<\/figcaption><\/figure>\n<p class=\"wp-block-paragraph\">To change the simulation settings, open the formatting pane, then simulation, and increase both the link distance and repulsion force. I chose to set repulsion to 0.3, and link distance to 15.<\/p>\n<figure class=\"wp-block-image size-full\"><img data-recalc-dims=\"1\" data-dominant-color=\"1d1c1c\" data-has-transparency=\"true\" style=\"--dominant-color: #1d1c1c;\" loading=\"lazy\" decoding=\"async\" width=\"560\" height=\"1013\" src=\"https:\/\/i0.wp.com\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_24XZRlEn_96U8nynlle-wg.png?resize=560%2C1013&#038;ssl=1\" alt=\"\" class=\"wp-image-597532 has-transparency\" srcset=\"https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_24XZRlEn_96U8nynlle-wg.png 560w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_24XZRlEn_96U8nynlle-wg-166x300.png 166w\" sizes=\"auto, (max-width: 560px) 100vw, 560px\"><figcaption class=\"wp-element-caption\">Source: Author<\/figcaption><\/figure>\n<p class=\"wp-block-paragraph\">You can now see that we get a much better layout of our data.<\/p>\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" data-dominant-color=\"faf8f8\" data-has-transparency=\"true\" style=\"--dominant-color: #faf8f8;\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"563\" src=\"https:\/\/i0.wp.com\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_j2ZN3pa7ivhW2uh3UfFQkg-1024x563.png?resize=1024%2C563&#038;ssl=1\" alt=\"\" class=\"wp-image-597533 has-transparency\" srcset=\"https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_j2ZN3pa7ivhW2uh3UfFQkg-1024x563.png 1024w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_j2ZN3pa7ivhW2uh3UfFQkg-300x165.png 300w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_j2ZN3pa7ivhW2uh3UfFQkg-768x422.png 768w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_j2ZN3pa7ivhW2uh3UfFQkg-1536x844.png 1536w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_j2ZN3pa7ivhW2uh3UfFQkg.png 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\"><figcaption class=\"wp-element-caption\">Source: Author<\/figcaption><\/figure>\n<p class=\"wp-block-paragraph\">Let\u2019s now encode some additional information into the graph, by changing the node color based on node categories. Drag the fields you mapped above to Source Color and Target Color.<\/p>\n<figure class=\"wp-block-image size-full\"><img data-recalc-dims=\"1\" data-dominant-color=\"1e1d1d\" data-has-transparency=\"true\" style=\"--dominant-color: #1e1d1d;\" loading=\"lazy\" decoding=\"async\" width=\"560\" height=\"634\" src=\"https:\/\/i0.wp.com\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_7-LkYL0SGoPC8B4sU7q1CQ.png?resize=560%2C634&#038;ssl=1\" alt=\"\" class=\"wp-image-597534 has-transparency\" srcset=\"https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_7-LkYL0SGoPC8B4sU7q1CQ.png 560w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_7-LkYL0SGoPC8B4sU7q1CQ-265x300.png 265w\" sizes=\"auto, (max-width: 560px) 100vw, 560px\"><figcaption class=\"wp-element-caption\">Source: Author<\/figcaption><\/figure>\n<p class=\"wp-block-paragraph\">You\u2019ll now notice the nodes are colored differently and we have a legend on the visual.\u00a0<\/p>\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" data-dominant-color=\"fbf9f9\" data-has-transparency=\"true\" style=\"--dominant-color: #fbf9f9;\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"566\" src=\"https:\/\/i0.wp.com\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_FeM0xxB51cDppyzpj5JaBA-1024x566.png?resize=1024%2C566&#038;ssl=1\" alt=\"\" class=\"wp-image-597535 has-transparency\" srcset=\"https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_FeM0xxB51cDppyzpj5JaBA-1024x566.png 1024w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_FeM0xxB51cDppyzpj5JaBA-300x166.png 300w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_FeM0xxB51cDppyzpj5JaBA-768x424.png 768w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_FeM0xxB51cDppyzpj5JaBA-1536x849.png 1536w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_FeM0xxB51cDppyzpj5JaBA.png 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\"><figcaption class=\"wp-element-caption\">Source: Author<\/figcaption><\/figure>\n<p class=\"wp-block-paragraph\">\u00a0Let\u2019s do some formatting to the background color and node colors in the formatting pane.<\/p>\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" data-dominant-color=\"1a1919\" data-has-transparency=\"true\" style=\"--dominant-color: #1a1919;\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"539\" src=\"https:\/\/i0.wp.com\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_v2xNVqK4UtjHhXkujI5upw-1-1024x539.png?resize=1024%2C539&#038;ssl=1\" alt=\"\" class=\"wp-image-597537 has-transparency\" srcset=\"https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_v2xNVqK4UtjHhXkujI5upw-1-1024x539.png 1024w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_v2xNVqK4UtjHhXkujI5upw-1-300x158.png 300w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_v2xNVqK4UtjHhXkujI5upw-1-768x404.png 768w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_v2xNVqK4UtjHhXkujI5upw-1-1536x808.png 1536w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_v2xNVqK4UtjHhXkujI5upw-1.png 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\"><figcaption class=\"wp-element-caption\">Source: Author<\/figcaption><\/figure>\n<p class=\"wp-block-paragraph\">Congratulations! You\u2019ve created a network graph visualization in PowerBI with dynamic node coloring.\u00a0<\/p>\n<p class=\"wp-block-paragraph\">We add even more information to the graph, for example:<\/p>\n<ul class=\"wp-block-list\">\n<li class=\"wp-block-list-item\">Turn on node weight to make nodes with more edges larger in size<\/li>\n<li class=\"wp-block-list-item\">Adding a link category to the color the links<\/li>\n<li class=\"wp-block-list-item\">Adding different labels to the nodes<\/li>\n<\/ul>\n<p class=\"wp-block-paragraph\">But we aren\u2019t done there.<\/p>\n<p class=\"wp-block-paragraph\">Once we have the visualization, stakeholders have to use it to make more informed decisions.<\/p>\n<h2 class=\"wp-block-heading\">Interacting with the Network\u00a0Graph<\/h2>\n<p class=\"wp-block-paragraph\">There is immediate value in a static network graph, such as being able to visually see how data is interconnected through relationships.\u00a0<\/p>\n<p class=\"wp-block-paragraph\">However, there are some additional features we can use to make the visualization more insightful.\u00a0<\/p>\n<p class=\"wp-block-paragraph\">First, we can interact with the legend by selecting categories to highlight them on the graph. For example, quickly locating Widgets in the graph:<\/p>\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" data-dominant-color=\"1a1919\" data-has-transparency=\"true\" style=\"--dominant-color: #1a1919;\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"540\" src=\"https:\/\/i0.wp.com\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_EyxARcKoMQpaJAW9s-vYXQ-1024x540.png?resize=1024%2C540&#038;ssl=1\" alt=\"\" class=\"wp-image-597538 has-transparency\" srcset=\"https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_EyxARcKoMQpaJAW9s-vYXQ-1024x540.png 1024w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_EyxARcKoMQpaJAW9s-vYXQ-300x158.png 300w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_EyxARcKoMQpaJAW9s-vYXQ-768x405.png 768w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_EyxARcKoMQpaJAW9s-vYXQ-1536x810.png 1536w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_EyxARcKoMQpaJAW9s-vYXQ.png 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\"><figcaption class=\"wp-element-caption\">Source: Author<\/figcaption><\/figure>\n<p class=\"wp-block-paragraph\">We can also select individual nodes in the graph by clicking on them.<\/p>\n<p class=\"wp-block-paragraph\">Alternatively, you can toggle \u201cselect adjacent nodes\u201d in the node properties to have it select not just the node clicked on, but all nodes directly connected to it through an edge.<\/p>\n<p class=\"wp-block-paragraph\">For example, selecting \u201cWidget A\u201d with \u201cselect adjacent nodes\u201d on shows all customers who have purchased that widget:<\/p>\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" data-dominant-color=\"1c1b1b\" data-has-transparency=\"true\" style=\"--dominant-color: #1c1b1b;\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"547\" src=\"https:\/\/i0.wp.com\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_gs781PamBWjPluixpd6V4A-1-1024x547.png?resize=1024%2C547&#038;ssl=1\" alt=\"\" class=\"wp-image-597540 has-transparency\" srcset=\"https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_gs781PamBWjPluixpd6V4A-1-1024x547.png 1024w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_gs781PamBWjPluixpd6V4A-1-300x160.png 300w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_gs781PamBWjPluixpd6V4A-1-768x410.png 768w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_gs781PamBWjPluixpd6V4A-1-1536x821.png 1536w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_gs781PamBWjPluixpd6V4A-1.png 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\"><figcaption class=\"wp-element-caption\">Source: Author<\/figcaption><\/figure>\n<p class=\"wp-block-paragraph\">But selecting nodes doesn\u2019t just highlight them in the visualization, it passes that filter to the rest of your PowerBI report.<\/p>\n<p class=\"wp-block-paragraph\">This means we can add additional charts to give some more context to the user\u2019s selections.\u00a0<\/p>\n<p class=\"wp-block-paragraph\">For example, adding a bar chart for quantity purchased by customer:<\/p>\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" data-dominant-color=\"60686f\" data-has-transparency=\"true\" style=\"--dominant-color: #60686f;\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"572\" src=\"https:\/\/i0.wp.com\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_Uzp87R3MNN0pCQWhUZUJKQ-1024x572.png?resize=1024%2C572&#038;ssl=1\" alt=\"\" class=\"wp-image-597541 has-transparency\" srcset=\"https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_Uzp87R3MNN0pCQWhUZUJKQ-1024x572.png 1024w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_Uzp87R3MNN0pCQWhUZUJKQ-300x168.png 300w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_Uzp87R3MNN0pCQWhUZUJKQ-768x429.png 768w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_Uzp87R3MNN0pCQWhUZUJKQ-1536x858.png 1536w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_Uzp87R3MNN0pCQWhUZUJKQ.png 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\"><figcaption class=\"wp-element-caption\">Source: Author<\/figcaption><\/figure>\n<p class=\"wp-block-paragraph\">We can also do the reverse by filtering the data going into the network visual. This can be accomplished in multiple ways, such as:<\/p>\n<ol class=\"wp-block-list\">\n<li class=\"wp-block-list-item\">Slicers<\/li>\n<li class=\"wp-block-list-item\">Selecting pieces of other charts, such as a slice of a donut chart<\/li>\n<li class=\"wp-block-list-item\">Filter pane<\/li>\n<\/ol>\n<p class=\"wp-block-paragraph\">Let\u2019s use a slicer to slice the graph on Customer Type:<\/p>\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" data-dominant-color=\"676a6c\" data-has-transparency=\"true\" style=\"--dominant-color: #676a6c;\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"573\" src=\"https:\/\/i0.wp.com\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_Zz9VpX5hFeTw8XsskyG29Q-1024x573.png?resize=1024%2C573&#038;ssl=1\" alt=\"\" class=\"wp-image-597542 has-transparency\" srcset=\"https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_Zz9VpX5hFeTw8XsskyG29Q-1024x573.png 1024w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_Zz9VpX5hFeTw8XsskyG29Q-300x168.png 300w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_Zz9VpX5hFeTw8XsskyG29Q-768x430.png 768w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_Zz9VpX5hFeTw8XsskyG29Q-1536x860.png 1536w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_Zz9VpX5hFeTw8XsskyG29Q.png 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\"><figcaption class=\"wp-element-caption\">Source: Author<\/figcaption><\/figure>\n<h2 class=\"wp-block-heading\">Building Complex BI\u00a0Reports<\/h2>\n<p class=\"wp-block-paragraph\">While the example network graph in this article is relatively simple for demonstration purposes, you can build quite complex BI reporting for stakeholders.\u00a0<\/p>\n<p class=\"wp-block-paragraph\">The Astra PowerBI visual used in this article can scale to hundreds of thousands of edges, and paired with additional cross-filtered visuals &amp; slicers can enable more advanced analytics than is possible with default PowerBI reports.<\/p>\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" data-dominant-color=\"171116\" data-has-transparency=\"true\" style=\"--dominant-color: #171116;\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"726\" src=\"https:\/\/i0.wp.com\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_IHjLb_zpYUX3O5HQ76C61Q-1024x726.png?resize=1024%2C726&#038;ssl=1\" alt=\"\" class=\"wp-image-597543 has-transparency\" srcset=\"https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_IHjLb_zpYUX3O5HQ76C61Q-1024x726.png 1024w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_IHjLb_zpYUX3O5HQ76C61Q-300x213.png 300w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_IHjLb_zpYUX3O5HQ76C61Q-768x545.png 768w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_IHjLb_zpYUX3O5HQ76C61Q-1536x1090.png 1536w, https:\/\/towardsdatascience.com\/wp-content\/uploads\/2025\/02\/1_IHjLb_zpYUX3O5HQ76C61Q.png 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\"><figcaption class=\"wp-element-caption\">Source: Author<\/figcaption><\/figure>\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n<p class=\"wp-block-paragraph\">Network graphs are all around us, even hiding in your relational datasets. While there is great network graphing tooling out there, building network graphs in PowerBI allows you to bring this advanced analytic tool to your standard BI stakeholders, as well as build advanced reporting by adding context with additional filters and charts.<\/p>\n<p>The post <a href=\"https:\/\/towardsdatascience.com\/how-to-create-network-graph-visualizations-in-microsoft-powerbi\/\">How to Create Network Graph Visualizations in Microsoft PowerBI<\/a> appeared first on <a href=\"https:\/\/towardsdatascience.com\/\">Towards Data Science<\/a>.<\/p>\n<\/div>\n<p> \t<BR><br \/>\n <BR><\/BR><br \/>\n    Mitchell Telatnik<br \/>\n \t<BR><br \/>\n<BR><\/BR><br \/>\n<a href=\"https:\/\/towardsdatascience.com\/how-to-create-network-graph-visualizations-in-microsoft-powerbi\/\">Go to original source<\/a><br \/>\n \t<BR><br \/>\n <BR><\/BR><\/p>\n","protected":false},"excerpt":{"rendered":"<p>How to Create Network Graph Visualizations in Microsoft PowerBI Microsoft PowerBI is a one of the most popular Business Intelligence (BI) tools, and while it has all the features you need to create dynamic analytic reporting for stakeholders across the business, creating some advanced data visualizations is more challenging. This article will walk through how [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[62,1668,83,82,1669,1670,1360],"tags":[84,339,132],"class_list":["post-1713","post","type-post","status-publish","format-standard","hentry","category-aimldsaimlds","category-business-intelligence","category-data-science","category-data-visualization","category-graph-database","category-network-graph","category-power-bi","tag-data","tag-graph","tag-network"],"_links":{"self":[{"href":"https:\/\/mailitics.com\/index.php\/wp-json\/wp\/v2\/posts\/1713"}],"collection":[{"href":"https:\/\/mailitics.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mailitics.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mailitics.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mailitics.com\/index.php\/wp-json\/wp\/v2\/comments?post=1713"}],"version-history":[{"count":0,"href":"https:\/\/mailitics.com\/index.php\/wp-json\/wp\/v2\/posts\/1713\/revisions"}],"wp:attachment":[{"href":"https:\/\/mailitics.com\/index.php\/wp-json\/wp\/v2\/media?parent=1713"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mailitics.com\/index.php\/wp-json\/wp\/v2\/categories?post=1713"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mailitics.com\/index.php\/wp-json\/wp\/v2\/tags?post=1713"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}