<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Simon Porritt</title>
    <description>The latest articles on DEV Community by Simon Porritt (@sporritt).</description>
    <link>https://dev.to/sporritt</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4026733%2F1b8354a9-a59e-4ee8-8a81-09e8a141a298.png</url>
      <title>DEV Community: Simon Porritt</title>
      <link>https://dev.to/sporritt</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sporritt"/>
    <language>en</language>
    <item>
      <title>Maximizing the data-ink ratio in a FIFA World Cup visualization</title>
      <dc:creator>Simon Porritt</dc:creator>
      <pubDate>Wed, 29 Jul 2026 06:10:04 +0000</pubDate>
      <link>https://dev.to/sporritt/maximizing-the-data-ink-ratio-in-a-fifa-world-cup-visualization-2j0p</link>
      <guid>https://dev.to/sporritt/maximizing-the-data-ink-ratio-in-a-fifa-world-cup-visualization-2j0p</guid>
      <description>&lt;p&gt;At VisuallyJs we're big fans of data visualization, and of the concept of the "data-ink" ratio: how can we wring as much informational content as possible out of a given set of pixels, without sacrificing clarity? &lt;/p&gt;

&lt;p&gt;We recently updated our &lt;a href="https://visuallyjs.com/demonstrations/fifaworldcup" rel="noopener noreferrer"&gt;FIFA World Cup visualization&lt;/a&gt; to make it run with VisuallyJs (it started out as a JsPlumb blog post), and in doing so we made a few improvements, which we're keen to share with people.&lt;/p&gt;

&lt;p&gt;To visualize the group stage, people typically use a table like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6wu5xgzh0qvey8ed1kcr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6wu5xgzh0qvey8ed1kcr.png" alt="Group stage table" width="800" height="382"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We see, for each team, their flag, name and a list of stats. What we don't see, though, is any of the interactivity between the teams. Who played who? What were the results of the games? &lt;/p&gt;

&lt;p&gt;We hit upon the idea of arranging the games in a circular layout, with links between each pair of teams showing the score of their match:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F57adv0gymz43ny6pd9nk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F57adv0gymz43ny6pd9nk.png" alt="Group stage visualization" width="800" height="714"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The nodes for each country contain a number of data points:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Flag&lt;/li&gt;
&lt;li&gt;Name&lt;/li&gt;
&lt;li&gt;Wins&lt;/li&gt;
&lt;li&gt;Losses&lt;/li&gt;
&lt;li&gt;Draws&lt;/li&gt;
&lt;li&gt;Goals For&lt;/li&gt;
&lt;li&gt;Goals Against&lt;/li&gt;
&lt;li&gt;Points&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;and the border of each country's node is color-coded to indicate their final placing in the group: dark green for 1st place, light green for 2nd, orange for 3rd, red for 4th.&lt;/p&gt;

&lt;p&gt;In total, for each country, we've managed to squeeze in 12 data points in what we think is a clear and easy to read format. But we're interested to hear your thoughts! &lt;a href="https://visuallyjs.com/demonstrations/fifaworldcup" rel="noopener noreferrer"&gt;Check out the demo&lt;/a&gt; and let us know. And if you want to use it yourself, there's a link to the Github repo (for React, Angular, Vue and Svelte) on the demo page. VisuallyJs is free for non-commercial use.&lt;/p&gt;

</description>
      <category>fifaworldcup</category>
      <category>react</category>
      <category>angular</category>
      <category>svelte</category>
    </item>
  </channel>
</rss>
