I'm working on plotting census data, which has a fairly high non-response rate for some questions (5% or higher). This could actually shift the way we interpret the results in quite significant ways (e.g. there are more non-responses than there are answers for some of the categories).

It doesn't seem accurate to represent non-responses as just another bar among many other bars, so I'm searching for an alternative way to represent this information to a viewing audience. What is the best way to represent the way that this non-data might impact how we should interpret the results? I could simply put a non-response = xx line as an annotation at the bottom of my plot. But this could be easily missed by a viewer - has anyone tried experimenting with modifying bars or some other more active annotation?

The most relevant way to do this is using bars/grouped bars with census data. Here's a reproducible example:

library(nomisr) # quickly grab census data from UK data clearinghouse nomis
z <- nomis_get_data(id = "NM_529_1", time = "latest", geography = "TYPE499", measures=c(20301))
uk_census_2011_religion <- filter(z, GEOGRAPHY_NAME=="England and Wales" & RURAL_URBAN_NAME=="Total" & C_RELPUK11_NAME != "All categories: Religion")
uk_census_2011_religion <- select(uk_census_2011_religion, C_RELPUK11_NAME, OBS_VALUE)
ggplot(uk_census_2011_religion, aes(x = C_RELPUK11_NAME, y = OBS_VALUE)) + geom_bar(stat = "identity")

And a visualisation sample:

bar chart

  • $\begingroup$ It would help to know what kind of graphical representation you are thinking of. You mention bars ? $\endgroup$
    – CaroZ
    Oct 5, 2023 at 8:40
  • $\begingroup$ I've just added a reproducible example, which produces an (ugly) bar chart $\endgroup$ Oct 5, 2023 at 9:27
  • 1
    $\begingroup$ Why does that seem inaccurate to you? $\endgroup$
    – Peter Flom
    Oct 5, 2023 at 10:07
  • 1
    $\begingroup$ Thanks. I would (1) rotate the plot to horizontal bars (2) colour not stated differently (3) think about separating it by a gap from other bars (4) not use alphabetical order, but sort on frequency (yet leaving not stated out of that sequence) (5) remove ticks on categorical axis. $\endgroup$
    – Nick Cox
    Oct 5, 2023 at 10:09
  • 1
    $\begingroup$ England and Wales 2011, so I am a data point in one of those bars. Given the option to say "no religion", and on other grounds. I agree strongly, that no assumptions can be made safely about "not stated". $\endgroup$
    – Nick Cox
    Oct 5, 2023 at 10:12

2 Answers 2


I do not see anything wrong with your representation, I would simply be more precise in what "religion not stated" means. I would call it "no answer" instead and put this category last. I would reorder the religions (including "no religion" by frequency, as suggested in the comments.


The barplot is okay but makes it hard to read off the percentages, esp. for the smaller categories.

I think a table works better.

  Christian        59.3
  No religion      25.1
  Other religion    8.4     Muslim     4.8
                            Hindu      1.5
                            Sikh       0.8
                            Jewish     0.5
                            Buddhist   0.4
                            Other      0.4
  No response       7.2

If you prefer a plot instead, one option is a stacked barplot though it would take care to position the labels of the minor categories so that they are readable.

I ended up making two stacked barplots: one barplot for the major categories where I put religions other than Christianity under a single label, "Other religion", and another barplot for the minor categories on their own.

enter image description here enter image description here


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.