Ralitza Soultanova

Ralitza Soultanova

@ralitzas.bsky.social

Data Interpreter & Visualizer: Transforming Complex Data into Compelling Visual Stories. Writes about DataViz, R, Science Communication. Teaching statistics to undergraduate students.

1K followers972 following102 posts

Day 29 · #30DayChartChallenge · Monochrome 165 students guessed the sweets in a jar. Only 15% got within ±10% of the truth. Nearly 1 in 3 was off by more than half. And most of them felt confident. The humbling geometry of being wrong. #rstats #dataviz #statistics #teaching

Day 28 · #30DayChartChallenge — Uncertainty 165 students guessed the sweets in a jar. 119 were confident they knew the answer. 119 were wrong in the same direction. One jar. One bias. One very good first stats class. 🍬 #rstats #dataviz #statistics #teaching

Day 27/30 — Uncertainty in Motion PISA reading scores animated as a Voronoi diagram. Green = above OECD average, orange = below. Close to the mean? You fade into the background. Not the most readable chart. But fun to make. #DataViz #RStats #30DaysOfCharts

Day 26/30 — Uncertainty Trend Which countries got better at reading? Not the ones you'd expect. 20+ years of PISA data. Only 10 of 38 countries improved. Finland dropped 56 points. Iceland fell 71. Chile and Colombia led the improvers. No clear pattern. #DataViz #Education #PISA #30DayOfCharts

Day 25 — #30DayChartChallenge Averages are comforting. They’re also misleading. The left plot looks clean: continental averages, neatly organised. One number can feel clear. It can also hide very different realities. Data: UNESCO & Our World in Data #DataViz

Day 24 — Time Series | #30DaysOfCharts Hong Kong graduates heading overseas for university hit a 14-year low in 2025 — down 56% from the 2014 peak. Been wanting to try gganimate for a while — fun to play with, even if animated charts aren't always the most readable! #DataViz #RStats #ggplot2

Is coding becoming secondary in data viz? No R. No ggplot. Just Claude — 3 interactions. From 1 in 10 adults able to read → nearly 9 in 10 today. Same data. New tools. Maybe the real skill isn’t coding. It’s knowing what to show — and how. How are you using AI? #30DayChartChallenge #DataViz #AI

From no schooling → mass education In 1950, nearly half of the world had no formal education. By 2020: just 13% — and secondary became the norm (49%). Access expanded massively. Now the challenge is progression and inequality within systems. #30DayChartChallenge #DataViz #Education

Day 20 — Global change In 1900, most children were out of school. Today, it’s a small minority. But not for everyone — girls were left behind for decades. Progress is real. Inequality too. #30DayChartChallenge #DataViz #Education

Day 19 — Timeseries (Evolution) Higher education enrolment across EU countries, 2000–2024. Each small chart shows one country in focus (yellow), against the EU context (grey). Education expansion is not uniform — but it is widespread. #30DayChartChallenge #DataViz #Education #EU #Timeseries

Day 18 — UNICEF data In most countries, girls outperform boys in reading in class 2-3 of primary school. Across 34 countries (MICS6), girls are ahead in 24 — often by a small margin, but consistently. Data: UNICEF MICS6 #DataViz #Education #GenderGap #UNICEF #30DayChartChallenge

Day 16 — Remake Back to Day 9, but simpler. Same idea, new chart: wealth vs years of schooling. The relationship is still there — clear and strong. #DataViz #Education #Wealth #30DayChartChallenge

Day 16 — Causation 37% vs 98%. A child's chance of finishing primary school, depending on where they're born. Poverty causes low education. Low education causes poverty. A cycle — but not an unbreakable one. In 1990 that 37% was only 14%. #DataViz #Education #R #30DayChartChallenge

Day 15 — Correlation A clear shift in new students in the UK after Brexit: fewer from the EU, more from elsewhere. Correlation or causation? #DataViz #InternationalStudents #30DayChartChallenge

Day 14 — Trade Where European students go to study. This Sankey maps flows of tertiary students across the EU — from top sending countries to main destinations. #30DayChartChallenge #DataViz #Education #EU

Day 13 - Education doesn’t run on good intentions. It runs on funding. In the EU, public spending on education varies from 2.9% to 7.3% of GDP. Same ecosystem. Very different levels of support. 3 highest and 3 lowest spending countries. #30DayChartChallenge #DataViz #Education

Most European adults are learning more than in 2016. Sweden leads at 37.5%. Bulgaria sits at 1.8%. The EU target is 60% by 2030 — most countries have a long way to go. Day 12 of #30DayChartChallenge — Built in R · Data: Eurostat #DataViz #RStats #30DayChartChallenge

81% of adolescents worldwide don't move enough. Girls: 85%. Boys: 78%. Every square = 1 child. The gold ones are the minority. Day 11 of #30DayChartChallenge — Physical. Built in R · Data: Guthold et al., The Lancet (2019) #DataViz #RStats #30DayChartChallenge

Day 10 — Pop culture A few iconic dropouts—Steve Jobs, Mark Zuckerberg, Bill Gates—have shaped how we think about success. But they are exceptions. Across countries, OECD data shows that higher education still brings substantial economic returns. #DataViz #Education #Inequality #30DayChartChallenge

Day 9 — Wealth Wealth and education move together. Across countries, the richer the country, the longer people stay in school. A strong relationship (r =0,84). Distance = years of schooling Size = GDP per capita #DataViz #Education #Wealth #30DayChartChallenge

Day 8 · Circular Same dataset, different view. The gap is now small almost everywhere — and sometimes reversed. Still work to do in Asia and Africa. More to explore at country level. #DataViz #Education #30DayChartChallenge

Day 7 — Multiscale Girls are catching up. Across every continent, schooling is rising — and the gap with boys is shrinking. Not at the same pace, but in the same direction. #DataViz #30DayChartChallenge

Day 6 of #30DayChartChallenge — Reporters Without Borders Does education buy press freedom? Somewhat. r = 0.40 across 148 countries — a real but imperfect relationship. Education matters. But it's clearly not enough. Tools: R · ggplot2 Data: UNESCO / Our World in Data · RSF 2025 #DataViz #Rstats

Day 5 of #30DayChartChallenge — data art. Each spiral is a country. Its length = years in school. From barely 1 to 14. Some barely get started. Others unwind freely. That gap is what this is about. Same data as Day 3 — UNESCO via Our World in Data. #DataViz #RStats #Education

Day 4 — Slope Illiteracy is declining across the world. Countries don’t start from the same place — far from it. But over time, the slopes of decline look strikingly similar. #DataViz #RStats #ggplot2#Education #OpenData #30DayChartChallenge.

Day 3 mosaic Friday = something more artistic. 193 tiles = 193 countries Color = average years of schooling From 1.4 (Nigeria) to 14.3 (Germany) Data: UNDP (2025), via Our World in Data #30DayChartChallenge #DataViz #RStats

#30DayChartChallenge day 2: Pictogram A shameless bit of self-promotion today. Give a try to ggpop. A couple of years ago I made a plot that caught the eye of Jorge Roa who build (together with others) ggpop, an R package for creating icon-based population charts. #DataViz #ggplot2 #ggpop

For Day 2 I used it to visualise a striking gap in global education: upper secondary school enrolment stands at 95% in developed countries — and just 44% in the least developed. Same age. Very different futures. 🔗 Give ggpop a try: jurjoroa.github.io/ggpop/

jurjoroa.github.ioIcon-Based Population Charts and Plots for ggplot2ggpop is an R package for creating icon-based population charts and pictogram plots with ggplot2. Use geom_pop() and geom_icon_point() to visualize proportion and population data with 2,000+ Font Awes...

Day 1 of #30DayChartChallenge This year: education data. Good news to start — global illiteracy has fallen drastically. I used a donut chart. Yes, the one I tell everyone to avoid. When the message is this simple, it can work. R + ggplot2 #rstats #dataviz #education

What happened to library(camcorder) in R? Do you have an idea why it's not working lately? Any turnaround? I don't like ggsave as you don't see the exact plot in the preview. 📊, #dataviz

I ran my first road marathon. Looking around, everyone around me seemed to be a young man. Confirmed by the data: - Only 1 in 4 runners was a woman - 4 in 10 runners were men under 35 - Women my age or older? Less than 2% #DataViz #DataVisualization #marathon #running

30 Days of Charts – Day 2: Slope Did you ever tried running or biking up Rue du Mystère in Brussels? A street with a slope of 11.3% It might not look daunting on a graph, but trust me, it's a challenge when you are out there! #Brussels #RueDuMystère #30DayChartChallenge #DataViz #DataVisualization

30 Days of Charts — Day 1 - Fractions Education on the Rise In Brussels, the share of young adults (aged 25–34) with a higher education diploma has steadily increased over the past 20 years. Rising from 46% in 2004 to 60% in 2024. #30DayChartChallenge, #fractions #dataviz

30Days of Charts starts tomorrow, and I'm excited to join #30DayChartChallenge again! This year, I’m aiming for 10 charts throughout the month. To stay efficient, I’ll set a 60-minute timer for each chart—otherwise, I tend to spend way too long fine-tuning the details.

When I experiment with non-standard charts, I’ll share tutorials so you can follow along. I’ll be using R and ggplot2, focusing on Brussels data. And if you know of any interesting Brussels datasets, don’t hesitate to share them with me.

Genuary 2025 Day 12 : Subdivision. I created fractal trees with curvature of the branches and some randomness. #Genuary #Genuary2025 #JavaScript #p5 #GenerativeArt #generativeart #geometry #DigitalArt #GeometricArt

Genuary 2025 Day 11 : Impossible day - Try to do something that feels impossible for you to do. I tried to embrace the randomness. I wanted to play with flowers without an idea of the final result I want to achieve. #Genuary #Genuary2025 #p5 #GenerativeArt #geometry #DigitalArt

Genuary 2025 Day 10 : You can only use TAU in your code, no other number allowed. That was a funny challenge In 34 lines of code 37 uses of TAU :-) #Genuary #Genuary2025 #JavaScript #p5 #GenerativeArt #generativeart #geometry #DigitalArt #GeometricArt

Genuary 2025 Day 9 : The textile design patterns of public transport seating. Colour coud have made more cense here but I'm keeping my grey scale approach #Genuary #Genuary2025 #JavaScript #p5 #GenerativeArt #generativeart #geometry #DigitalArt #GeometricArt

Genuary 2025 Day 8: Draw one million of something. One million bezier curves . Random gray scale colour of the stroke is changing every 8000 strokes. #Genuary #Genuary2025 #JavaScript #p5.js #GenerativeArt #Genuary5 #codeart #generativeart #geometry #DigitalArt #GeometricArt