r/visualization • u/hisham0777 • 50m ago
[ Removed by Reddit ] Spoiler
[ Removed by Reddit on account of violating the content policy. ]
r/visualization • u/hisham0777 • 50m ago
[ Removed by Reddit on account of violating the content policy. ]
r/visualization • u/Ok-Salt2274 • 5h ago
WhoRuledis an interactive world-history map. Stack: Astro (static), one React island for the Canvas 2D map, TypeScript strict, deployed as static assets on Cloudflare, no backend. Facts live in CC0 JSON keyed by Wikidata QID, and a pipeline imports rulers from Wikipedia with source URL and quote. Every claim needs a source or the page isn't indexable.
Things I learned: preloading the two pixel fonts took CLS from 0.425 to 0.000, and the build generates 1,600+ SEO pages from the data. Repo:WhoRuled. Feedback welcome, especially on the data model.
r/visualization • u/beachKilla • 9h ago
(S.WE.T.A.) Studio WEtware Transit Authority interactive website map.
r/visualization • u/yogodojo20 • 15h ago
Hi everyone, I'm a student doing a PhD in HCI at University of Utah. I am conducting a study about how people interpret visual representations of data structure.
I badly need participants for a study that I am conducting. It will be over zoom and for one hour. During this time you will look at different representations and answer different questions out aloud. The session will record your voice and the study application window.
If you are interested, please DM me. I am happy to answer questions you may have (HCI or admissions or anything else!)
Thanks!
r/visualization • u/1830belgium • 22h ago
Over the past few months, we have been developing a project called 1830belgium.com, with the goal of providing the clearest possible picture of the Belgian political landscape.
One of our initiatives at 1830 involves visualizing the 2024 municipal elections at the level of individual polling stations and vote-counting bureaus. By using data released by the Flemish government—which, unfortunately, was made available only for the municipal and provincial elections—we were able, for the first time, to create a visualization showing exactly how each neighborhood voted.
We began with my hometown, Ghent. Credit where credit is due: the province of East Flanders—and by extension, the city of Ghent—was significantly more open regarding their polling stations and counting bureaus than any other province (though Antwerp also performs quite well in terms of transparency). After spending several weeks carefully weighing the data and piecing the puzzle together, we arrived at a result for Ghent that we are truly satisfied with. We then applied the same approach to Antwerp, and I must say, I am very proud of the outcome. We used data from Statbel to assign the correct names to the defined sectors; I hope I have labeled them accurately and haven’t caused any offense—rest assured, the distribution of votes is entirely accurate. That said, any feedback or nuance you might offer would be more than welcome.
I hope you enjoy exploring it and appreciate the work we have put in over the last few weeks.
Here is the link: https://1830belgium.com/Antwerpen-verkiezingen-2024
r/visualization • u/Astherol • 1d ago
r/visualization • u/Competitive-Paint-84 • 1d ago
r/visualization • u/shinyro • 1d ago
It's been close to 3 weeks since the Nobel Peace Prize winner for 2026 was announced. Donald Trump was not the laureate. Again.
But that has not stopped the President from talking about it a lot. In fact, he has mentioned the Nobel Peace Prize 112 times in his second term in office. Six of those were literally yesterday where he dedicated nearly 2 1/2 minutes talking about the award that he definitely isn't envious of.
Using Rollcall's great archive as the primary data source, I made this dashboard that tracks all of Trump's mentions of the Nobel. If you want to explore the interactive version, complete with filters for date and record type (ex. Interview, Speech, Truth Social, etc.) you can check it out here: https://artofnodeal.com/nobel
It's just a pet project with ads or strings attached. But the interactive version has the actual quotes, too, so you can read such gems as:
I settled eight wars. No other president settled a war.
Hope you enjoy this!
r/visualization • u/lorlorlor • 1d ago
Enable HLS to view with audio, or disable this notification
r/visualization • u/Outrageous_Tea3066 • 1d ago
r/visualization • u/OkNeighborhood1021 • 2d ago
I made this after seeing the usual referee arguments around El Clásico. The bars show the gap between Madrid and Barça after comparing each club’s points with what pre-match odds predicted, per 10 games. It includes LaLiga games against all opponents from 2000/01 to 2025/26, with current referees who have at least five matches for each club. Small samples matter, and this doesn’t prove referee bias. I grouped the bigger gaps to make it easier to read. Is the chart clear without needing this explanation? Data: El Colegiado (https://elcolegiado.com/data/), using football-data.co.uk. Method: https://elcolegiado.com/methodology/ Made with Python and Matplotlib. I also built an interactive version with results, penalties and cards: https://clasicostats.app/referees/?utm_source=reddit&utm_medium=social&utm_campaign=visualization
r/visualization • u/Alphabetical_Dice • 2d ago
Enable HLS to view with audio, or disable this notification
r/visualization • u/Reasonable-Safe-4002 • 4d ago
Enable HLS to view with audio, or disable this notification
r/visualization • u/Solid_Philosopher_85 • 4d ago
Amazon’s Echo came out in late 2014 and went on wide sale in 2015, the year Alexa hit its highest rank ever, #32. From 2016 on it fell every single year: 4,775, then 3,896, 3,068, 2,002, 1,285, 708, 577, 492, 349, and 243 in 2025. That’s down 96% in ten years. In 2025 it dropped out of the top 1,000.
The data only shows the timing, not the reason, but it’s hard to look at that cliff and not think of the speaker.
Can you think of another name that a product or a character pushed off a cliff this fast?
r/visualization • u/ExcellentWinner7542 • 4d ago
r/visualization • u/TrekkingAround10 • 5d ago
Imagine two mutually exclusive categories of service requests, A and B, counted in two consecutive months:
In a standard stacked area chart with A at the bottom, B’s upper boundary falls from 100 to 70. Following that boundary alone could make B look as though it declined. B actually increased from 20 to 30.
Read B’s vertical thickness at each month:
The top edge follows the combined total. B’s lower edge moves with A, so neither boundary by itself gives B’s trend.
A useful construction check is to redraw the same data with B at the bottom. Its boundary now rises from 20 to 30, even though none of the data changed. The original stack was mathematically correct; the order changed which component had a fixed baseline.
If the main question is how the total and its composition changed, the stack can be useful. Label the components and show their values at the relevant dates. If the main question is whether B increased, a separate line or small-multiple panel makes that comparison easier. Keep panel scales consistent when comparing magnitudes.
These are invented counts to isolate the reading problem, not reported country data. The example uses an ordinary zero-baseline stack, not a 100% stack or streamgraph.
Reference: https://data.europa.eu/apps/data-visualisation-guide/stacked-charts
From Global Data Tracker: https://globaldatatracker.com/
r/visualization • u/TrekkingAround10 • 5d ago
A diverging palette does not automatically make zero its neutral color. The normalization matters too.
Consider five fictional forecast errors in minutes: -2, -1, 0, +1, +8. Define error as actual time minus forecast time, so negative means earlier and positive means later.
If you linearly map the observed minimum (-2) to palette position 0 and maximum (+8) to position 1, zero lands at (0 + 2) / 10 = 0.2. The palette midpoint, 0.5, represents +3 minutes. With a neutral color at that midpoint, “no error” would not look neutral.
If equal-sized early and late errors should have equal distances from the palette center, use symmetric limits around zero, such as -8 to +8. Then -2 maps to 0.375, zero to 0.5, and +2 to 0.625. You leave some of the negative side unused, but preserve the same scaling rate on both sides. Matplotlib’s CenteredNorm implements this kind of normalization.
Alternatively, TwoSlopeNorm with vmin=-2, vcenter=0 and vmax=8 maps -2 to 0, zero to 0.5 and +8 to 1. This uses the full palette on each side. But -2 and +8 now sit equally far from neutral despite having different error magnitudes. Use it only when that separate scaling matches the intended reading, and make the unequal ranges clear on the colorbar.
Show units, a tick at zero and the limits. State whether the two sides share a scaling rate. Do not rely on color alone for exact values: add labels or another accessible way to read them when needed.
These are normalized palette positions, not a promise that any chosen palette will look perceptually balanced. Zero is meaningful here because it means no forecast error; a different variable may need another reference or no diverging palette at all.
Official implementation references:
https://matplotlib.org/stable/api/_as_gen/matplotlib.colors.CenteredNorm.html
https://matplotlib.org/stable/api/_as_gen/matplotlib.colors.TwoSlopeNorm.html
Country-data project: https://globaldatatracker.com/
The numbers above are invented to explain the encoding, not country observations or a claim about the site's chart features.