€1,600 . That’s how much interest Germany has to pay for its debts. In total, the German state has debts ranging into the trillions — greater than a thousand billion Euros. And the federal government is planning to make much more, up to 1 trillion additional debt is rumored to follow over the following 10 years.
The numbers involved in governmental funds are so huge that one probably cannot realistically assess just how much even 1 billion Euro or Dollar are.
In this text, I reveal that conventional lists and Charts fail to convey a way of just how much money is at stake on the subject of governmental spending. I then show how . I’ll use Germany for instance, because it currently receives numerous media coverage and its debt statistics are freely available.
Plain enumeration
To start out, we’ll use plain enumeration of the important thing facts as the primary method to (not) put information into relation. It excludes household debts. As we’ll later see, this easy method utterly fails in comparison with the visualization tools provided through easy scripts.
- €1,600: rate of interest per second
- €25,503: debt per German citizen if state debt is split
And here’s already a big jump for us. We’re directly jumping into the billions:
- €49,5 : rate of interest per yr
- €100 billion: Sondervermögen (euphemism for debt) for German Army
- €500 billion: additional debt for infrastructure
Now, we’re making one other jump:
- €2,11 : total German governmental debt (as of March 2025)
After reading these numbers, we’d know a bit more about Germany’s debt. But we hardly have an understanding of how they relate to one another. Yes, we all know that €1 billion is a thousand times €1 million. But that’s just common sense.Â
We might probably fare higher if we could see the numbers visualized side by side. That’s what we’ll do next.
Linearly scaled charts
Using python and the Matplotlib plotting library, it is easy to create an easy chart. (Complete code is linked in this text’s Resource section at the tip).Â
I picked 4 numbers to visualise together: €1,600 (because most individuals know ), €25,503 (since it nicely shows the hidden debt that any German has), €1 billion (because that’s a really large sum, something that enormous corporations don’t even make per yr), and, finally €49,5 billion (because that’s how much Germany currently must spend just in interest per yr ).
import matplotlib.pyplot as plt
# Data
amounts = [1600, 25503, 1e9, 49.5e9, ]
labels = ['Per-sec. interest', 'Per-person debt','€1 billion', 'Yearly interest']
plt.figure(figsize=(10, 6))
plt.bar(labels, amounts, color=['orange', 'orange', '#03A9F4', '#ff0000'])
After running this code, we get the next plot:
What we see right away: we don’t see the small money. The large amounts completely dwarf the €1,600. I’d wager to say that anybody reading this has more connection to only €1,000 than to, say, €1 million. We all know what €1,000 could afford us. A few €1,000 is monthly income for most individuals.
However the chart doesn’t even recognize it.
Is the error that I used linearly scaled axes? Let’s see next.
Logarithmically scaled charts
In visualizing the info logarithmically, we’ll stick with python and matplotlib. We merely must add a single line of code and directly get an updated chart:

Is it higher? To some extent, ! We are able to now begin to see the difference between on a regular basis amounts (just like the €1,600 interest per second) and the planned spending (i.e., debt).
Because of the logarithmic scaling, they seem on the identical chart. On this visualization, the chart doesn’t grow linearly, but logarithmically. Which means that the spacing between two markers on the y-axis doesn’t represent a set, equal increment (like before within the linearly scaled plot). As an alternative, each step represents a multiplication by a relentless factor. In our plot, the spacing is decided by multiplying with 100 (or, adding two trailing zeros).
For our purpose: is such logarithmic scaling higher than linear scaling? Yes, definitely.
But, is it sufficient? Can we not do higher in attempting to convey what Germany’s as much as when it plans for €500 billion of additional debt? And, how does this debt relate to other, already existing debts?
Yes, after all we will. Using a bit little bit of HTML, JavaScript, and a few CSS styling, we will quickly create an easy interactive webpage. For a beginner it’s easily doable over a weekend.
A static webpage is all it needs!
Data scientists and programmers wrangle with data day-in, day-out. Tools like Excel and python scripts help them with transforming the info to realize insights.
Sometimes, nonetheless, an easy webpage can convey the connection between numbers higher. Especially after we are talking concerning the huge sums involved in governmental debts.
We start our visualization in HTML, by stacking just a few div-elements on top of one another:
...
€25,503 (Debt per German citizen )
...
For every section, we indicate the quantity in € in an HTML attribute.
Next, we’ll use JavaScript to remodel the amounts into an easy-to-grasp-visualization.
For this, we define that each pixel represents €1,000. By utilizing rectangular forms, we will thus represent any sum of money:
document.addEventListener("DOMContentLoaded", function() {
const wealthBars = document.querySelectorAll(".debt");
wealthBars.forEach(bar => {
if (!bar.dataset.scaled) {
const amount = parseInt(bar.dataset.height) / 1000;
const width = Math.min(Math.sqrt(amount), 200); // Cap the width pixels
const height = amount / width;
bar.style.width = width + "px";
bar.style.height = height + "px";
bar.dataset.scaled = "true";
Lastly, we add some CSS styling to make the rendered webpage look well:
.debt-wrapper {
display: flex;
flex-direction: column;
align-items: center;
margin: 20px 0;
}
.debt-title {
font-size: 20px;
margin-bottom: 10px;
}
/* Debt Bars */
.debt {
position: relative;
transition: height 0.3s ease-out, width 0.3s ease-out;
background-color: #ffcc00;
max-width: 200px; /* Maximum width for bars */
}
Putting all of this together (find the total source code within the Resources section below), we get the next (I added further key numbers that I considered relevant in putting the German debt into proportion):

Now, that’s a straightforward to know visualization! You’ll be able to explore it yourself here: https://phrasenmaeher.github.io.
This easy webpage more accurately represents the large amount of fresh debt that Germany desires to make. Using basic Programming skills, we show how the debt pertains to on a regular basis sums (like €1,600) and existing debt-related costs (just like the €49,5 billion interest per yr). Just start scrolling down, and also you get a way of how much money it’s. Within the above GIF, we’ve got not even scrolled 1% of the complete way down (have a look at the scroll bar to the proper, it barely moves).
Recall that 1 pixel equals €1,000. Even for those who are earning €10,000 per 30 days, that’s merely 10 pixels, which is barely noticeable within the debt bars. In the event you scroll just 1 pixel down, you may have uncovered €200,000 of latest debt (with the default bar width of 200). Even for those who make €1 million (per yr), that’s only a mere scrolling of 5 pixels. Nonetheless much money you make, the visualization demonstrates:.
In the event you are German, I don’t feel envy, especially not for the upcoming generations: anyone has to pay this back.