This code is fairly minimal and should be able to be tweaked to a solution.
blah <- data.frame(X1=c("Decrease Risk","Don't Know","Increase Risk","No Effect","Decrease Risk","Don't Know","Increase Risk","No Effect"),
X2=c("Red Meat","Red Meat","Red Meat","Red Meat","Red Meat","Red Meat","Red Meat","Red Meat"),
value=c(1.98,31.19,64.38,2.43,4.65,24.55,35.88,34.90),
status=c("Case","Case","Case","Case","Control","Control","Control","Control")
)
ggplot(blah, aes(X2, value, fill=X1)) + geom_bar() + coord_flip() + facet_wrap(~status) +
labs(x="Perceived Risk Factors", y="Percentage (%)", tilte="Some Title", fill="Responses")

What I’d like is that the ‘controls’ on the right have the order of the levels of ‘Responses’ reversed. The point being so that for the controls the purple is on the inside, then the bluey one, then green with pink on the outside. It semi common to do this in a plot like this, and I can think of ways to do it that involve some fairly dirty duping of variables and changing of ordered factor levels but thought someone might have an elegant solution/idea?
Here is one slightly delicate approach using the order aesthetic.
It is not ideal because it does not generalize all that easily when there are more than two facets.