Suppose you've surveyed many people and asked them to rank a small number of things. How would you graph the resulting data?
This seems like a simple task, but I'm not fully satisfied with anything I've seen.
Here are a few ideas:

The trouble is that most of the graphs that would otherwise be natural fits are optimized for continuous data.
Box plots (top left) are questionable even for continuous data, but they seem especially crude here.
You can fiddle with the fundamental ideas behind box plots (top right), but I think it's barking up the wrong tree.
Something like a tab plot (bottom left) is more promising, but this feels too categorical, like the ordinal nature of the data is a coincidence.
A rejiggered tab plot (bottom right) is my current best idea. We've got something more like a histogram going on. But even this doesn't seem ideal. For example, it would be nice to represent means, but adding a continuous mean on top of this fundamentally discrete representation doesn't sit right.
Any better ideas, either your own or found in the wild?
(Both stripplot and tabplot, used above, are Nick Cox creations.)
This seems like a simple task, but I'm not fully satisfied with anything I've seen.
Here are a few ideas:
Code:
* Simulate data clear set seed 123456 lab def fruit 1 "Apples" 2 "Bananas" 3 "Oranges" 4 "Grapes" 5 "Pears" 6 "Peaches" 7 "Figs" set obs 7 gen byte fruit = _n lab val fruit fruit expand 1000 sort fruit gen id = 1 + mod(_n,1000) gen rand = rnormal(0,2) + fruit bysort id (rand) : gen rank = _n lab var rank "Rank" drop rand * Graph graph box rank, over(fruit) yreverse ylabel(1/7) /// name(box, replace) stripplot rank, over(fruit) tufte boffset(-0.3) iqr jitter(2) mcolor(%5) vertical yscale(reverse) ylabel(1/7) xtitle("") /// name(box2, replace) tabplot rank fruit, xtitle("") subtitle("") note("") title("") /// name(tab, replace) tabplot rank fruit, horizontal barwidth(1) xtitle("") subtitle("") note("") title("") /// name(tab2, replace) graph combine box box2 tab tab2, scale(0.6) col(2) scheme(s2mono) commonscheme
The trouble is that most of the graphs that would otherwise be natural fits are optimized for continuous data.
Box plots (top left) are questionable even for continuous data, but they seem especially crude here.
You can fiddle with the fundamental ideas behind box plots (top right), but I think it's barking up the wrong tree.
Something like a tab plot (bottom left) is more promising, but this feels too categorical, like the ordinal nature of the data is a coincidence.
A rejiggered tab plot (bottom right) is my current best idea. We've got something more like a histogram going on. But even this doesn't seem ideal. For example, it would be nice to represent means, but adding a continuous mean on top of this fundamentally discrete representation doesn't sit right.
Any better ideas, either your own or found in the wild?
(Both stripplot and tabplot, used above, are Nick Cox creations.)
Comment