Note: there is a new version of this page with better equation formatting.

Imagine you're a sociologist, studying a group of people. You're interested in the following three personality traits: assertiveness, beauty, and cruelty. Call each person's values **a**, **b**, and **c**, measured on a scale from 0 to 100. Each trait is independent of the others. Each person's traits make up a triplet (**a**,**b**,**c**). For your analysis, you're not concerned with the magnitude of the numbers, but which traits predominate in which people. Your task is to plot each person's triplet in such a way that the relative strengths of their traits are immediately visible.

Since there are three traits, you might expect this to take three dimensions, but we can do it in two. The key is that we're not interested in the magnitude of each number; we're interested only in how one number compares with the others. Given two numbers **a** and **b**, we define a line segment AB. The closer to a point is to A, the greater the ratio **a**/(**a**+**b**). The closer to B, the less the relative value of **a**.

We can extend this idea to three numbers by plotting each triplet in an equilateral triangle. Each vertex represents one of the three qualities. Like the two-number case, the proximity of a point to a particular vertex is a measure of how dominant that quality is in the triplet. The closer a vertex, the more that quality dominates. It's easiest to understand by looking at some examples.

Each point tells a story. P is perfectly balanced between the three traits. Q is much more assertive than beauteous or cruel. R has no assertiveness at all, and is more cruel than beautiful. S is evenly split between assertiveness and beauty, and has just a touch of cruelty, relatively.

Plotting the points is easy. First divide the AB line into two segments with the ratio **b**/**a**. Make a temporary marker where the segments join. If **a** is zero, mark the B vertex.

Note that the diagram shows the **b** segment touching the A vertex, and vice versa. This is not a mistake. The more **a** you have, the further you should be from the B vertex.

The second step is similar. Draw a line from the C vertex to the temporary marker. Divide this line into two segments in the ratio (**a**+**b**)/**c**. Again, the **c** segment should be touch line AB. The point that divides the segment is our desired point.

Let's try a few sanity checks to make sure that this makes sense. Where's the point corresponding to (1,1,1)? Dividing AB into a 1/1 ratio gives a point midway between A and B. Dividing the line to C is 2/1, so our point is 1/3 of the way up the line. Basic geometry demonstrates that this is indeed the midpoint of an equilateral triangle.

What about someone who's only got one quality, say A? The temporary marker is at the A vertex, and the second step divides the line AC into two segments, one of which (**c**) is zero. So the result is at A. The results also make sense when only one of the qualities is zero.

This procedure apparently compresses three different variables into two dimensions. You might think we shouldn't be able to do that, and actually we don't. The key is that we're only concerned with the ratios between the numbers, not the numbers themselves. (1,1,1) is the same as (100,100,100) to this procedure. The missing dimension is the magnitude of the numbers.

The procedure to plot points starts with **a** and **b**, then uses **c** in the second step. What happens if we start with different qualities, say **a** and **c**, then use **b** in the second step? (We'd plot **a**/**c** on line AC, of course.) Will the point plotted be the same as if we'd started with **a**/**b**? If not, how is it related to the first point we plotted?

(Note: the lengths of each segment in these diagrams should be divided by the entire length of the line. For example, if a line is divided into segments **a**+**b** and **c**, the actual segment lengths are respectively (**a**+**b**)/(**a**+**b**+**c**) and **c**/(**a**+**b**+**c**).)

The answer is it doesn't matter which of the points you begin with. You'll plot the same point.

After several failed attempts to prove this without reference to coordinate geometry, I gave in. The proof followed quickly. The first step is to create three lines y_{a}, y_{b}, and y_{c}, each of which is parallel to the side opposite the labeled vertex. The shortest distance from the line to the corresponding vertex is in the correct proportion, i.e. the line corresponding to vertex **C** is at a height which cuts all lines from **C** to a point on **AB** in the ratio (**a**+**b**)/**c**.

Assuming point **A** is the origin, and **B** is at (1,0), the formulas for these lines are:

y_{a} = 3^{1/2} × ( -*x* + (**b**+**c**) / (**a**+**b**+**c**) )

y_{b} = 3^{1/2} × ( *x* - **b** / (**a**+**b**+**c**) )

y_{c} = 3^{1/2} × **c** / ( 2 × (**a**+**b**+**c**) )

Solving the first two equations for x gives

*x* = (2**b**+**c**) / ( 2 × (**a**+**b**+**c**) )

Plugging this value of *x* into the equations for y_{a} and y_{b} yields the same value as y_{c}. Hence all the lines meet at one point.

An alternative proof uses lines through the vertices, rather than parallel to them. The lines have equations

y'_{a} = **c** × 3^{1/2} × *x* / (**b**+**c**)

(when **b**+**c** is not equal to 0)

y'_{b} = (1-*x*) × **c** × 3^{1/2} / (**a**+**c**)

(when **a**+**c** is not equal to 0)

y'_{c} = 3^{1/2} × [ -**b** + *x* × (**a**+**b**)] / (**a**-**b**)

(when **a**-**b** is not equal to 0)

y'_{a} and y'_{b} are equal when *x* = (**b**+**c**)/(**a**+**b**+2**c**). Calculating y'_{c} for this value yields the same value as y'_{a} and y'_{b}, as one would expect. The value is 3^{1/2} × **c** / ( 2 × (**a**+**b**+**c**) ), which agrees with the formula for y_{c} -- an added check.

The cases where a denominator is 0 are those in which the intersection point is on one of the vertices **A**, **B**, or **C**. In that case, the lines are undefined, since it takes two points to define a line, and we only have one.

This proof can undoubtedly be generalized to higher dimensions. This is left as an exercise for the reader.

Plotting triplets is easier using vector math. Imagine an equilateral triangle with three vectors A, B, and C pointing from its center to its vertices.

To find where we should plot triplet (**a**,**b**,**c**), multiply each vector by its associated value divided by **a**+**b**+**c**, then sum the vectors: point = (**a**A+**b**B+**c**C)/(**a**+**b**+**c**). For example, given triplet P = (3,1,6), we plot (3A+1B+6C)/10:

Vector addition commutes, so it doesn't matter in what order we add them. We'll always get the same point.

This method fails if **a**+**b**+**c**=0. In this case, the point is at the origin O.

**Additional notes, 2002-03-21**

I seem to have reinvented barycentric coördinates.

Thanks to Blancmange for suggesting using vectors.

Which generalization to

*N*values is better: an*N*-dimensional simplex, or a regular*N*-gon in two dimensions?

Last updated 4 June 2005

`http://www.rdrop.com/~half/Creations/Puzzles/TripletPlotting/index.html`

All contents ©1999-2003 Mark L. Irons