If you prefer a ggplot2
-based solution, as an alternative to suggested base R
graphics solution, I think that it should be along the following lines. A minimal reproducible example (MRE), based on your data follows.
if (!suppressMessages(require(ggplot2))) install.packages('ggplot2')
if (!suppressMessages(require(reshape))) install.packages('reshape')
library(ggplot2)
library(reshape)
myData <- data.frame('Gov. agencies' = c(3, 10, 1, 8, 7), 'Local authority' = c(3, 6, 3, 4, 13), 'Police forces' = c(3, 6, 3, 4, 13), 'NGO/third sector' = c(2, 5, 1, 10, 11), response = c('Not familiar', 'Somewhat familiar', 'Neutral', 'Familiar', 'Very familiar'))
levels(myData$response) <- c('Not familiar', 'Somewhat familiar', 'Neutral', 'Familiar', 'Very familiar')
myDataMelted <- melt(myData, id.vars = 'response')
ggplot(myDataMelted, aes(x=response, y=value, fill = variable))+
geom_bar(stat = "identity", position = "dodge", color = "black")
The result:

WARNING! Please note that the above code is posted as a proof-of-concept and it is not only not complete in terms of labeling/beautification, but it contains an error (I think, not a major one), which I hope more knowledgeable people here will help me to fix, so that you could have an alternative solution (and I could have some educational experience and peace of mind, after all the trouble :-). The error is that groups are not in the correct order / do not belong to the correct categories. I've tried to alleviate that problem via levels()
, but probably still missed or forgot some other point.