€1,600 per second. That’s how a lot curiosity Germany has to pay for its money owed. In complete, the German state has money owed ranging into the trillions — greater than a thousand billion Euros. And the federal government is planning to make much more, as much as one trillion extra debt is rumored to observe over the following 10 years.
The numbers concerned in governmental funds are so large that one most likely can not realistically assess simply how a lot even 1 billion Euro or Greenback are.
On this article, I reveal that typical lists and Charts fail to convey a way of simply how a lot cash is at stake on the subject of governmental spending. I then present how a bit of little bit of programming can interactively visualize this cash and the way it pertains to different numbers. I’ll use Germany for instance, because it at the moment receives lots of media protection and its debt statistics are freely obtainable.
Plain enumeration
To begin, we’ll use plain enumeration of the important thing info as the primary technique to (not) put data into relation. It excludes family money owed. As we’ll later see, this easy technique totally fails in comparison with the visualization instruments offered via easy scripts.
- €1,600: rate of interest per second
- €25,503: debt per German citizen if state debt is cut up
And right here’s already a big leap for us. We’re immediately leaping into the billions:
- €49,5 billion: rate of interest per 12 months
- €100 billion: Sondervermögen (euphemism for debt) for German Military
- €500 billion: deliberate extra debt for infrastructure
Now, we’re making one other leap:
- €2,11 trillion: complete German governmental debt (as of March 2025)
After studying these numbers, we’d know a bit extra about Germany’s debt. However we hardly have an understanding of how they relate to one another. Sure, we all know that €1 billion is a thousand occasions €1 million. However that’s simply widespread sense.
We might most likely fare higher if we may see the numbers visualized aspect by aspect. That’s what we’ll do subsequent.
Linearly scaled charts
Utilizing python and the Matplotlib plotting library, it’s simple to create a easy chart. (Full code is linked on this article’s Useful resource part on the finish).
I picked 4 numbers to visualise collectively: €1,600 (as a result of most individuals know simply how a lot already that’s), €25,503 (as a result of it properly exhibits the hidden debt that any German has), €1 billion (as a result of that’s a really massive sum, one thing that enormous firms don’t even make per 12 months), and, lastly €49,5 billion (as a result of that’s how a lot Germany at the moment must spend simply in curiosity per 12 months which is greater than most international locations’ GDP).
import matplotlib.pyplot as plt
# Knowledge
quantities = [1600, 25503, 1e9, 49.5e9, ]
labels = ['Per-sec. interest', 'Per-person debt','€1 billion', 'Yearly interest']
plt.determine(figsize=(10, 6))
plt.bar(labels, quantities, coloration=['orange', 'orange', '#03A9F4', '#ff0000'])
After operating this code, we get the next plot:

What we see instantly: we don’t see the small cash. The massive quantities utterly dwarf the €1,600. I’d wager to say that anyone studying this has extra connection to only €1,000 than to, say, €1 million. We all know what €1,000 may afford us. A few €1,000 is an effective month-to-month revenue for most individuals.
However the chart doesn’t even acknowledge it.
Is the error that I used linearly scaled axes? Let’s see subsequent.
Logarithmically scaled charts
In visualizing the info logarithmically, we’ll follow python and matplotlib. We merely want so as to add a single line of code and immediately get an up to date chart:

Is it higher? To some extent, sure! We will now start to see the distinction between on a regular basis quantities (just like the €1,600 curiosity per second) and the deliberate spending (i.e., debt).
Due to the logarithmic scaling, they seem on the identical chart. On this visualization, the chart doesn’t develop linearly, however logarithmically. Because of this the spacing between two markers on the y-axis doesn’t signify a set, equal increment (like earlier than within the linearly scaled plot). As an alternative, every step represents a multiplication by a continuing issue. In our plot, the spacing is decided by multiplying with 100 (or, including two trailing zeros).
For our objective: is such logarithmic scaling higher than linear scaling? Sure, undoubtedly.
However, is it ample? Can we not do higher in making an attempt to convey what Germany’s as much as when it plans for €500 billion of extra debt? And, how does this debt relate to different, already current money owed?
Sure, after all we are able to. Utilizing a bit of little bit of HTML, JavaScript, and a few CSS styling, we are able to rapidly create a easy interactive webpage. For a newbie it’s simply doable over a weekend.
A static webpage is all it wants!
Knowledge scientists and programmers wrangle with information day-in, day-out. Instruments like Excel and python scripts assist them with remodeling the info to realize insights.
Generally, nevertheless, a easy webpage can convey the connection between numbers higher. Particularly once we are speaking concerning the large sums concerned in governmental money owed.
We begin our visualization in HTML, by stacking just a few div-elements on high of one another:
...
<div class="debt-wrapper">
<h2 class="debt-title">€25,503 (Debt per German citizen <em>if complete governmental debt is cut up </em>)</h2>
<div class="debt one-thousand" data-height="25503"></div>
</div>
<div class="debt-wrapper">
<h2 class="debt-title">€1 billion</h2>
<div class="debt billion" data-height="1000000000"></div>
</div>
<div class="debt-wrapper" id="interest-year">
<div class="debt-header">
<h2 class="debt-title">€49,5 billion (German curiosity per 12 months)</h2>
</div>
<div class="debt ruler" data-height="49500000000"></div>
</div>
...
For every part, we point out the quantity in € in an HTML attribute.
Subsequent, we’ll use JavaScript to rework the quantities into an easy-to-grasp-visualization.
For this, we outline that every pixel represents €1,000. Through the use of rectangular kinds, we are able to thus signify any sum of money:
doc.addEventListener("DOMContentLoaded", perform() {
const wealthBars = doc.querySelectorAll(".debt");
wealthBars.forEach(bar => {
if (!bar.dataset.scaled) {
const quantity = parseInt(bar.dataset.top) / 1000;
const width = Math.min(Math.sqrt(quantity), 200); // Cap the width pixels
const top = quantity / width;
bar.model.width = width + "px";
bar.model.top = top + "px";
bar.dataset.scaled = "true";
Lastly, we add some CSS styling to make the rendered webpage look effectively:
.debt-wrapper {
show: flex;
flex-direction: column;
align-items: middle;
margin: 20px 0;
}
.debt-title {
font-size: 20px;
margin-bottom: 10px;
}
/* Debt Bars */
.debt {
place: relative;
transition: top 0.3s ease-out, width 0.3s ease-out;
background-color: #ffcc00;
max-width: 200px; /* Most width for bars */
}
Placing all of this collectively (discover the total supply code within the Sources part under), we get the next (I added additional key numbers that I thought of related in placing the German debt into proportion):

Now, that’s a simple to grasp visualization! You may discover it your self right here: https://phrasenmaeher.github.io.
This easy webpage extra precisely represents the massive quantity of recent debt that Germany desires to make. Utilizing primary Programming abilities, we present how the debt pertains to on a regular basis sums (like €1,600) and current debt-related prices (just like the €49,5 billion curiosity per 12 months). Simply begin scrolling down, and also you get a way of how a lot cash it’s. Within the above GIF, we’ve got not even scrolled 1% of your entire approach down (take a look at the scroll bar to the proper, it barely strikes).
Recall that 1 pixel equals €1,000. Even in case you are incomes €10,000 per thirty days, that’s merely 10 pixels, which is barely noticeable within the debt bars. If you happen to scroll simply 1 pixel down, you could have uncovered €200,000 of latest debt (with the default bar width of 200). Even should you make €1 million (per 12 months), that’s only a mere scrolling of 5 pixels. Nonetheless a lot cash you make, the visualization demonstrates: it’s actually a drop within the debt ocean.
If you’re German, I don’t really feel envy, particularly not for the upcoming generations: someone has to pay this again. Along with current money owed.