# Visualizing Likert Item Response Data

What are good ways to visualize set of Likert responses?

For example, a set of items inquiring about the importance of X to one's decisions about A, B, C, D, E, F & G? Is there something better than stacked bar charts?

• What should be done with responses of N/A? How might they be represented?
• Should the bar charts report percentages, or number of responses? (i.e. should the bars total the same length?)
• If percentages, should the denominator include invalid and/or N/A responses?

I have my own views, but I am looking for other people's ideas.

-

I like the centered count view. This particular version removes the neutral answers (effectively treating neutral and n/a as the same) to show only the amount of agree/disagree opinions. The 0 point is where red and blue meet. The count axis is clipped out.

For comparison, here are the same five responses as stacked percentages, showing both neutral (gray) and no answer (white).

Update: Paper suggesting a similar method: Plotting Likert and Other Rating Scales (PDF)

-
(+1) Interesting! Which software do you use? Just a remark: There's no indication about absolute values for % or counts, so this seems to allow only a relative interpretation. –  chl Oct 25 '10 at 17:45
Sorry, I didn't read your last sentence (the x-axis is invisible). I'll try another remark: Any chance to get the NA counts visible in the centered view (i.e. distinguish them from neutral)? –  chl Oct 25 '10 at 18:11
(+1) - very nice. –  Tal Galili Oct 25 '10 at 22:13
@chl Thanks. I use JMP, which I get paid to work on. The first one is a stacked bar chart with positive and negative values, which should be possible in lots of tools. NA counts could be done different ways (at one end, split over both ends, in the middle, separate column) and none seems obviously better for most situations. –  xan Oct 25 '10 at 23:55
Thanks. I was hesitating between JMP and Systat. –  chl Oct 26 '10 at 8:20

Stacked barcharts are generally well understood by non-statisticians, provided they are gently introduced. It is useful to scale them on a common metric (e.g. 0-100%), with a gradual color for each category if these are ordinal item (e.g. Likert). I prefer dotchart (Cleveland dot plot), when there are not too many items and no more than 3-5 responses categories. But it is really a matter of visual clarity. I generally provide % as it is a standardized measure, and only report both % and counts with non-stacked barchart. Here is an example of what I mean:

data(Environment, package="ltm")
Environment[sample(1:nrow(Environment), 10),1] <- NA
na.count <- apply(Environment, 2, function(x) sum(is.na(x)))
tab <- apply(Environment, 2, table)/
apply(apply(Environment, 2, table), 2, sum)*100
dotchart(tab, xlim=c(0,100), xlab="Frequency (%)",
sub=paste("N", nrow(Environment), sep="="))
text(100, c(2,7,12,17,22,27), rev(na.count), cex=.8)
mtext("# NA", side=3, line=0, at=100, cex=.8)


Better rendering could be achieved with lattice or ggplot2. All items have the same response categories in this particular example, but in more general case we might expect different ones, so that showing all of them would not seem redundant as is the case here. It would be possible, however, to give the same color to each response category so as to facilitate reading.

But I would say stacked barcharts are better when all items have the same response category, as they help to appreciate the frequency of one response modality across items:

I can also think of some kind of heatmap, which is useful if there are many items with similar response category.

Missing responses (esp. when non negligible or localized on specific item/question) should be reported, ideally for each item. Generally, % of responses for each category are computed without NA. This is what is usually done in survey or psychometrics (we speak of "expressed or observed responses").

P.S. I can think of more fancy things like the picture shown below (the first one was made by hand, the second is from ggplot2, ggfluctuation(as.table(tab))), but I don't think it convey as accurate information as dotplot or barchart since surface variations are difficult to appreciate.

-
BTW, A question about Graphing Likert scale responses just came across Andrew Gelman's weblog yesterday :) j.mp/aBm8mZ –  chl Oct 24 '10 at 8:46
(+1) This remind me of the pairs.panels function in the psych package by W Revelle. –  chl Oct 23 '10 at 20:03