Data is Beautiful

3755 readers
2 users here now

Be respectful

founded 2 years ago
MODERATORS
1
 
 

Hello everyone,

I am at the moment the only active mod of this community, which is usually not recommended.

I am hence looking for other mods. The moderation load is very low, people on this community are usually nice.

Please comment with a mander.xyz account (reports do not federate) below if you want to become a mod.

2
 
 
3
 
 

How people allocate their 24 hours across commuting, entertainment, housework, and other daily activities from 1920 to 2026.

All figures represent the average U.S. adult aged 25 to 35 during each period, ensuring comparability across decades. The data reflects long-term shifts driven by industrialization, urbanization, television, the internet, smartphones, remote work, and changing social structures. The chart excludes sleep, work, and other activities with minimal variation, focusing instead on structural changes across decades.

4
5
6
 
 

OGDF C++ library provides some graph generators, I made it possible to use them from terminal, not by writing C++ client code. Got some pleasant pictures, here they are.

  1. Graphs of ~32 nodes, FMMM layout.
  2. Graphs of ~512 nodes, FMMM layout.
  3. Graphs of ~512 nodes, ForceAtlas2 layout.

Each node is labeled by it's degree - count of incoming/outgoing edges. Colored accordingly, from blue to red.

Powershell code for creating these pictures goes like that:

# define params for each generator
$genLines = @'
complement --n 32 --directed false --allowSelfLoops false
regularLatticeGraph --n 32 --k 4
regularTree --n 32 --children 2
completeGraph --n 32
completeBipartiteGraph --n 16 --m 16
wheelGraph --n 32
cubeGraph --n 5
globeGraph --meridians 8 --latitudes 4
suspension --s 32
gridGraph --n 8 --m 4 --loopN false --loopM false
petersenGraph --n 16 --m 2
emptyGraph --nodes 32
randomRegularGraph --n 32 --d 4
randomGraph --n 32 --m 100
randomSimpleGraph --n 32 --m 100
randomSimpleGraphByProbability --n 32 --pEdge 0.2
randomSimpleConnectedGraph --n 32 --m 50
randomBiconnectedGraph --n 32 --m 60
randomPlanarConnectedGraph --n 32 --m 60
randomPlanarBiconnectedGraph --n 32 --m 60 --multiEdges false
randomPlanarBiconnectedDigraph --n 32 --m 60 --p 0.0 --multiEdges false
randomUpwardPlanarBiconnectedDigraph --n 32 --m 60
randomPlanarCNBGraph --n 32 --m 60 --b 5
randomTriconnectedGraph --n 32 --p1 0.5 --p2 0.5
randomPlanarTriconnectedGraph --n 32 --m 80
randomPlanarTriconnectedGraph --n 32 --p1 0.3 --p2 0.3
randomTree --n 32
randomTree --n 32 --maxDeg 4 --maxWidth 10
randomDigraph --n 32 --p 0.1
randomSeriesParallelDAG --edges 60 --p 0.5 --flt 0.0
randomGeometricCubeGraph --nodes 32 --threshold 0.3 --dimension 2
randomWaxmanGraph --nodes 32 --alpha 0.5 --beta 0.2 --width 1.0 --height 1.0
preferentialAttachmentGraph --nodes 32 --minDegree 2
randomWattsStrogatzGraph --n 32 --k 4 --probability 0.3
randomHierarchy --n 32 --m 3 --planar true --singleSource true --longEdges false
pruneEdges --max_edges 60 --min_deg 2
'@

# generate graphs and layout/render with GephiCommander
$genLines | % {
$genCode = $_ -replace '\s+'
$outFile = Join-Path (gi ./img/) "$genCode$(Get-Date -Format FileDateTime).png"
$generatorArgs = $_ -split ' '
$expr = /bin/echo `& $ogdfCli --generate @generatorArgs --out-file delme.dot
Invoke-Expression $expr
@(
  @{op='import'; file='delme.dot' }
  @{op='preview'; 'background-color'='#171717'; 'nodeLabelShow'=$true; }
  @{op='colorNodesBy';column='degree'; mode='ranking'}
  @{op='labelNodesBy';column='degree'; }
  @{op='layouts'; values=@(
    @{name='ForceAtlas2'; steps=200}
    @{name='Expansion'; 'Density'=5000; steps=1;  }
  )}
  @{op='export';file=$outFile; timestamp=$false; resolution=@(512,512); }
) | ConvertTo-Json -d 9 | java -jar $gephiCommander -
$cmdEscaped = $generatorArgs -join ' '
magick $outFile -gravity SouthWest -undercolor "rgba(0,0,0,0.5)" -fill white -pointsize "%[fx:int(h*0.04)]" -annotate +10+10 $cmdEscaped $outFile
}

# Put all pngs into $files var and combine them into a grid
magick montage $files -tile "${cols}x${rows}" -geometry "400x400+2+2" -background "black" "img/grid_output$(Get-Date -Format FileDateTime).png"
7
 
 
8
 
 
9
 
 

To read the essay, check out the main page here: https://anatomyof.ai/

10
 
 
11
 
 
12
13
 
 

I recently installed an Emporia Vue with monitoring for the individual circuit my water heater is on. It captured the very significant difference in energy usage from replacing resistive heat with heat pump.

14
 
 
15
 
 
16
 
 
17
18
19
 
 

While being more than 9000 kilometers away, I can still see and hear what birds are currently singing in the Vondelpark - Amsterdam.

https://luistervink.nl/locations/vondelpark/live/

I hope the herons and the owls don't mind.

@dataisbeautiful

20
21
22
 
 

Post inspired by this recent comment about how useful 120 is (or 240 in this case), because its can be evenly divided so many ways: https://sh.itjust.works/post/40842670/19379837

Source: https://www.royalmintmuseum.org.uk/journal/history/pounds-shillings-and-pence/

23
 
 
24
 
 

By popular demand, one last map to examine the absurdity of the American economy.

If you saw my map from yesterday that was up most of the day, please see the corrected version below. I done goofed hard on copying a column of state names. The original post has been corrected, but I will also post my previous two maps on this post for easy comparison.

Edit: the red map, for anyone unaware, is based on current individual state minimum wages and not the current federal minimum wage

25
 
 

Edit: the corrected map is now live

Out of curiosity, I wanted to see what a reasonable federal minimum wage might look like if implemented.

Looking at historical information from a time when a single individual’s income could support a family of four, I settled at the late 1950s.

The minimum wage in 1956 was finally raised to one whole dollar, the equivalent of about $12 today by raw inflation. However, its key to remember that this was an era when women were not paid on par with men, and when children younger than 13 commonly were in the workforce.

So instead I found average wage and salary numbers for 1958. In 1958, the average among all adult male wages was $4,888, and salaried men (doctors, lawyers, etc not included) averaged $6,514. Taking the salary figure and adjusting it for inflation gives you roughly $72k, or close to $35/hr.

If the average person had anywhere near the purchasing power of an individual in 1958, then no one could be making less than $35 per hour for their labor. Effectively, to return people to that level of financial security this is what it would take, while everything would simultaneously have to remain the same price. Meaning this wage increase would necessarily have to come out of the pockets of shareholders/owners.

The map shows quite clearly that even with such a high minimum wage, it would still be unaffordable in 100% of the country on 40 hours of work per week alone.

Trickle down economics have doomed this country on a path toward economic ruin, and have pushed most people in the US to such a precarious point financially that they have no hope of living as comfortably as the average worker in 1958. The average salaried worker today earns just $61k per year, over $10k shy of what the average worker made back in the day. Meanwhile, the cost of goods and services are astronomically higher.

$1 in 1956 bought you 4 gallons of gasoline. I pay $20 for that, even though by raw inflation the dollar is worth $12 today. Although gas is highly influenced by many factors that are unstable.

~~In the late 1950s, a cheap American car cost about $14k. The equivalent of over $168k today by inflation. By average salary, an individual could buy a car within 3-4 years easily by saving intentional for it. At modern wages, this would be impos. At $72k per year it becomes about as feasible as it was back then to reach that $168k mark.~~

These rough concepts are how I landed on $35 per hour as an appropriate measure. As well as the fact that wages today are almost entirely earned by adults, considering modern labor laws and the decline of the teenage workforce.

Edit: I just did the math for funsies, and 72,800 per year is about the appropriate income to afford the median rental price in the US (about $1900 in April 2025) or just shy of the median mortgage price of about $2,100 (also April)

view more: next ›