I am looking for a way to coherently display data of the following format:

Name - Height - Weight - Result (their athletic performance)

where Name can safely be considered a unique ID, and the 3 values are simplified by using previously assigned groups, i.e., they are always numbers between 0 and 3. The original values are not important, so a weight of 270lbs and a weight of 300lbs would both be assigned the highest (3) group for this value, etc.

Example data:

| Name   | Height | Weight | Result |
| Arnold | 2      | 3      | 3      |
| Bruce  | 1      | 1      | 1      |
| Chad   | 3      | 2      | 0      |

The visualization should allow me to easily discern how many entries of the data set are in each group, but I don't want to create three different graphs for each category, because the overall score also matters.

In the example, Arnold would be the "best" athlete while Chad comes second, although he surpasses Arnold in height. Is there a good way to map those relationships so that one can easily spot the "winners" for each category as well as in total?

My first impulse was to simply create a 3d scatter plot using the categories as "dimensions", but that makes it impossible to compare the individual entries or to recognize which groups have the most entries. After that, I considered some sort of Venn diagram, but that doesn't work for variables that have more than 2 states (groups for 0 or 1 exist, but I can't include 2 or 3 in such a diagram).

My knowledge on data visualization is pretty limited. I am hoping somebody has a better idea :)


1 Answer 1


Before I get started few notes:

  1. not sure what you mean by "The visualization should allow me to easily discern how many entries of the data set are in each group". Do you want a total to appear or just to visually count?
  2. not sure how Chad comes in second, maybe there's a data column missing?

With the given information: I would advise against a 3d scatter plot, or any 3d plots for that matter. It's very hard to visually judge dimensions/scale when affected by 3d perspective.

Instead following is R code to create a single line plot that plots all the data simultaneously. (You will need the packages ggplot2 and reshape2)

df <- data.frame(name=c('Arnold', 'Bruce', 'Chad'),

df <- melt(df)
ggplot(df, aes(x=variable, y=value, group=name, color=name)) + 
  geom_line() + geom_point(size=4)

The outcome is as below: Line graph by name

Note that adhering to visual best practices I strongly advise using facets or panels or trellis etc., as the above graph gives a notion of continuity between the different measures that actually doesn't exist. As your data gets more dense i.e. too many names, this graph would not be the best choice.

Update: The graph is called parallel coordinate plot. (Reference for multivariate analysis using PCP)


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.