Figures

Every figure is produced from the model and its data. Nothing is drawn by hand.

matplotlib, stacked horizontal bar

Electricity fuel mix of the 28 largest power systems

Electricity fuel mix of the 28 largest power systems

Each bar is one country, split by the share of its electricity that comes from each fuel. The countries are ordered by average demand, with the largest at the top. The shares are measured, not estimated. They come from the Energy Institute Statistical Review and from Our World in Data. In the model, this share sets the strength of the link between a fuel supply and its national grid. A country with a high coal share therefore reacts more to a coal supply problem.

seaborn histogram and matplotlib cumulative curve

How world electricity demand is distributed and concentrated

How world electricity demand is distributed and concentrated

The left panel counts countries by their average electricity demand. The scale is logarithmic because the range is very wide. The right panel adds the countries together, starting with the largest. It shows how few countries hold most of the world demand. This concentration is the reason a change in one large system can move the world total.

matplotlib, small multiples

The four price series that set market inertia in the model

The four price series that set market inertia in the model

Each panel is one traded price, taken from the Federal Reserve Economic Data service. The model uses the variation in these series, not the prices themselves. A price that moves a great deal in the record is given a low inertia value, so it reacts quickly in the model. A steady price is given a high inertia value. This is how the real behaviour of each market enters the model.

seaborn box plot

How strongly each type of node resists change

How strongly each type of node resists change

Inertia controls the speed of a node. A recorded event has the lowest inertia because a disaster happens at once. Behaviour channels have the highest inertia because habits change over years. Price benchmarks cover a range, because each one takes its value from its own measured volatility. This single parameter produces the order in which effects arrive across the model.

seaborn histogram and matplotlib bar

The structure of the links between nodes

The structure of the links between nodes

The left panel counts links by their weight. Most links are weak. A small number are strong. This shape is expected, because each node connects strongly to a few neighbours and weakly to many others. The right panel shows which pairs of node types are joined most often. The model contains 197,068 links in total, of which 1,144 are negative. A negative link carries relief rather than stress.

seaborn heat map with annotations

How far one change travels, by the layer it starts in

How far one change travels, by the layer it starts in

Each bar is a change applied to the most connected node in one layer, and its length is the number of other nodes that finished more than 0.02 away from where they started. The axis is logarithmic because the answers span five orders of magnitude: a change at the most connected power plant in the world moves one other node, and a change at the climate moves seventy-eight thousand. The climate is the only node in the model that connects to every country. The spread is the evidence that the propagation discriminates rather than floods.

matplotlib, logarithmic count axis

When the effect arrives

When the effect arrives, by the layer the change starts in

One line per starting layer. Each point counts the nodes reached for the first time at that step, so the area under a line is that layer’s total reach. A grid delivers almost everything it is going to deliver in the first two steps, because its plants and districts are its immediate neighbours. A price works through the fuel supplies and the grids behind them and is still reaching new nodes twenty steps later. Physical coupling is fast and shallow; market coupling is slow and deep.

matplotlib with twin axes

The model saturates rather than growing without limit

The model saturates rather than growing without limit

A change is applied to the climate, the most widely connected node in the model, and its size is raised in steps from a twentieth to the maximum. The violet line counts the nodes that moved; the gold line gives the mean effect among them. The violet line is nearly vertical and then flat: past about a fifth of full size the change already reaches everything it is ever going to reach, and pushing harder only pushes those same nodes further. The gold line keeps climbing, but with a bend, because the tanh in the calculation bounds every node inside (−1, 1). A price cannot rise without end and a grid cannot fail more than completely.

plotnine, grammar of graphics

System size against low carbon share

System size against low carbon share

Each point is one country. The horizontal position is the size of its power system. The vertical position is the share of its electricity that comes from nuclear, hydro or other renewable sources. The grey line is a smoothed trend. The plot shows that size alone does not decide the low carbon share. Small systems occupy the full range, because a single large hydro station can supply most of a small country.

the atlas itself

Every power plant in the model

The station layer holds 34,936 generating units across 167 countries, each at its recorded coordinate, from the World Resources Institute Global Power Plant Database. Capacity is carried per unit, and the fuel is carried in the node's name, which is where the solar share driving the insolation links is measured from.

The plant layer is not a static picture, so it is not reproduced here as one. The atlas draws all of it on a globe, filters it by weight, and lets a change be applied to any single unit.

Open the atlas on the plant layer

matplotlib, stacked time series

The two climate series that set the state of the model

The two climate series that set the state of the model

The upper panel is the carbon dioxide record from Mauna Loa. The saw pattern is the growing season of the northern hemisphere. The lower panel is the global temperature anomaly. Both series are read directly into the model. They set the starting state of the two climate nodes. The climate nodes then connect to every national grid, and to the gas and electricity prices, through heating and cooling demand.

pandas plotting on matplotlib axes

Recorded disasters that the model contains

Recorded disasters that the model contains

The left panel adds the adjusted damage of every energy relevant disaster in each decade, and separates the total by disaster type. The right panel names the twelve costliest single events. These records come from the international disaster database. In the model, each event is a node. The recorded damage sets the strength of the link from that event to the national grid of the country it struck.

matplotlib, computed field and measured series

The space layer

Annual mean insolation against latitude, and the measured total solar irradiance

On the left, the annual mean sunlight arriving above the atmosphere at each latitude. This is not data. It is computed from the measured solar constant, the obliquity of 23.44 degrees and the eccentricity of the orbit, integrated over 365 days. The dashed line is the solar constant divided by four, which is what the area-weighted mean of the curve has to equal — the disc the Earth intercepts over the sphere it radiates from. It agrees to one part in ten thousand, which is the check that the integration is right rather than merely plausible. The equator receives 416 W/m² and the poles about 174.

On the right, the measured total solar irradiance, NRLTSI2, with its stated uncertainty as the shaded band. Four solar cycles are visible. The whole vertical range of the panel is two watts in thirteen hundred and sixty, which is the honest scale of the thing the solar minimum scenario perturbs.

matplotlib, horizontal bar, log scale

Every node names its source

Every node names its source

The model records where each node came from. This chart counts the nodes by source. The largest groups are the settlement list from GeoNames and the plant list from the World Resources Institute. The group marked as published studies holds the consumer response values. These values are the only assumed parameters in the model, and they are labelled so that a reader can find them.


Method

Statistical panels use matplotlib and seaborn. The grammar of graphics panel uses plotnine. The interactive map uses plotly. Each figure names its method above the title.