Skip to content
Start free

Did it grow more in pesos or in percent? A chart's scale

See how the same information tells two stories in pesos and in percent, and choose the scale that answers the reader's question.

Free course. Your Maestro, an AI, .

At the July meeting, the regional manager wants to know which branch grew the most from the first half of the year to the second. Two people build the chart from the same data and come back with different answers: one says "Zapopan" and the other "Tonalá". They're both right. This page is about the third move, the scale, and the fourth, what to compare, which together explain how that can happen.

Pesos or percent

Here are the numbers (synthetic data). From the first half of 2025 to the second, Zapopan added 707,700 pesos and Tonalá 487,800. In pesos, Zapopan wins. But Zapopan was already selling 5.8 million in the first half, and Tonalá 1.6. Zapopan's 707 thousand pesos are 12.3% more; Tonalá's 487 thousand are 29.9% more. In percent, Tonalá is growing more than twice as fast.

Neither reading is the true one. They answer different questions:

  • In pesos (absolute change) answers "where did the new money come from?" If the question is how to reach the chain's sales target, Zapopan is what matters.
  • In percent (relative change) answers "who's moving fastest for their size?" If the question is which branch is doing something worth copying, Tonalá is what matters.

Percent has a trap of its own: from very small bases, anything grows. A branch that goes from selling 10 cakes to 20 "grew 100%". So when you read a big percentage, look for the base it comes from.

Try it

This chart shows the change in thousands of pesos. The manager's question is a different one: which branch grew fastest for its size? Change it so it answers that.

Make two changes in the JSON (the field names are in Spanish: cambiomiles is the change in thousands of pesos, cambiopct the change in percent, sucursal the branch): 1. In x, change "field": "cambiomiles" to "field": "cambiopct". 2. Change the axis title, "Change (thousands of pe

Your turn

Make two changes in the JSON (the field names are in Spanish: cambio_miles is the change in thousands of pesos, cambio_pct the change in percent, sucursal the branch):

  1. In x, change "field": "cambio_miles" to "field": "cambio_pct".
  2. Change the axis title, "Change (thousands of pesos)", to "Change (%)", so nobody reads percentages as if they were pesos.

You're done when Tonalá ends up on top with 29.9 and the axis says they're percentages. The bars reorder themselves because "sort": "-x" sorts by whatever is in x. Look at who moved up and who moved down.

Edit the JSON; the preview updates when you pause.

How this maps to Altair

Altair builds this same JSON: chart.to_json() prints it. "mark": "point" is alt.Chart(df).mark_point(). Each encoding channel is an argument to .encode(), such as x=alt.X("field:Q", scale=alt.Scale(type="log")) or color="field:N". Each transform entry is a call such as .transform_filter("datum.year == 2007").

Run it yourself

With the same pair of changes, Tonalá went from third place to first and Zapopan dropped to fourth. Nothing in the data changed: what changed is what gets compared. So when someone shows you a "growth" chart, the third move is to ask "in what?", and the fourth, "is this what I need to compare?".

If at work you compare areas or stores of very different sizes, ask your Maestro which scale best answers your question.

Per what

A relative of the percentage is the rate: dividing by something that puts everyone on the same footing. Sales divided by tickets gives the average ticket; complaints divided by customers gives complaints per hundred customers. A big branch will always have more complaints in total than a small one. If the question is "where is service worse?", what you compare is complaints per customer, not total complaints. When you read a chart of totals across groups of very different sizes, ask yourself whether the question called for a rate.

When each step multiplies

Almost every chart you'll see has a linear scale: each mark on the axis adds the same amount (0, 500, 1,000, 1,500). Some have a : each mark multiplies (10, 100, 1,000, 10,000). They're used when values range from very small to huge, for example La Espiga's sales next to those of a national chain: on a linear scale, La Espiga would be a sliver stuck to zero.

Reading them takes special care. On a logarithmic scale, two points the same distance apart don't have the same difference in pesos, but the same ratio: from 10 to 100 is the same as from 1,000 to 10,000, multiplying by ten. If you see marks that jump by ten, you know you're on that scale. In Excel it's a checkbox, "Logarithmic scale", in the axis options, and it can't be used for negative values or zero.

Check yourself: A chart says Tlaquepaque grew 13.5% and Zapopan 12.3% in the second half. Your boss concludes: "Tlaquepaque brought us more new money than Zapopan." What do you tell them?

You now have all four moves. What comes next in the course are the traps that slip in when someone skips one of them while making a chart, and that you'll be able to see when you read it. One last case to close the module.

Check yourself: In a report you see two bars: "Complaints in 2025: Zapopan 120, Tonalá 45". Zapopan serves about 98 thousand tickets a year and Tonalá about 44 thousand. With the four moves, what would you compare to find out where service is worse?

When is a logarithmic scale the right choice? Ask your Maestro with an example from your work.