What is the best way to visualize Likert-type dependent variables with 2x2 binary independent variables? In a between-subjects experiment, we have 2x2 conditions and several 7-point Likert dependent variables.
What would be the best way to visualize this data?
I am a statistics newbie, so please forgive my simple questions. I have, of course, searched the web and this forum. But most posts I found seem to be dealing with binary dependent variables. In contrast, we have, I think, binary independent variables.
Is it OK to treat the Likert answers as a continuous variable? I seem to recall some discussion (I forget where - maybe a textbook, maybe a paper) whether or not this is OK.
It does not seem to be a categorial variable to me. Maybe it's an ordered categorial variable?
But, more importantly, what would you suggest to plot the data?
Simple box-plots (with whiskers) don't seem to work really well, because in almost all dependent variables we had a few participants answering with the lowest, and some with the highest scores.
Also, it would be nice if one could show the answers for one dependent variable for all 4 conditions in one single plot in an intuitive way.
 A: As Nick Cox writes, it makes the most sense to facet your plot by the four conditions. Within each facet, you can do many things. Boxplots are one possibility, but they really compress your data too much, as you write.
Likert scales are indeed ordered categorical scales. You have only seven possible outcomes. This to me suggests a simple histogram or barplot with seven bars, so you would have a plot with four such histograms. Just make sure the vertical axes are of the same length so the plots are comparable. You could also add a vertical line to indicate some measure of central tendency - the mean if it makes sense (i.e., if you can meaningfull add your responses), or the median. Possibly add horizontal lines to indicate spreads, like the first and third quartile - or standard errors/confidence intervals for the central tendency.
Here is an example using simulated data in R. The vertical dashed lines indicate the means, the horizontal red lines span the first and third quartile.

R code:
n_per_condition <- 100
set.seed(1)
dataset <- data.frame(condition_1=rep(c("A","B"),each=2*n_per_condition),
    condition_2=rep(c("X","Y"),times=2*n_per_condition),
    response=factor(sample(1:7,4*n_per_condition,replace=TRUE)))

plot_data <- function(condition_1,condition_2,ylim=c(0,30)) {
    index <- dataset$condition_1==condition_1 & dataset$condition_2==condition_2
    plot(c(0.5,7.5),ylim,type="n",xlab="",ylab="",xaxt="n",
        main=paste0("(",condition_1,",",condition_2,")"))
    axis(1,1:7)
    rect(xleft=-0.4+(1:7),
        ybottom=rep(0,7),
        xright=0.4+(1:7),
        ytop=as.numeric(table(dataset[index,"response"])),
        col="grey")
    abline(v=mean(as.numeric(as.character(dataset[index,"response"]))),lty=2,lwd=2)
    lines(quantile(as.numeric(as.character(dataset[index,"response"])),c(0.25,0.75)),
        rep(ylim[2],2),col="red",lwd=2)
}

opar <- par(mfrow=c(2,2),las=1,mai=c(.5,.5,.5,.1))
    plot_data("A","X")
    plot_data("B","X")
    plot_data("A","Y")
    plot_data("B","Y")
par(opar)

