Controlar as larguras da coluna em um gráfico ggplot2 com uma série e dados inconsistentes

Nos dados artificiais que criei para o MWE abaixo, tentei demonstrar a essência de um script que criei em R. Como pode ser visto no gráfico que é produzido a partir desse código, em uma das minhas condições, não tenha um valor "Não" para concluir a série.

Foi-me dito que, a menos que eu consiga fazer esta última coluna que infelizmente não possui as séries extras tão finas quanto as outras colunas em que no gráfico eu não nos será permitido, e esses gráficos. Infelizmente, isso é um problema, porque o script que escrevi produz centenas de gráficos simultaneamente, completos com estatísticas, indicadores de significância, barras de erro propagadas e ajustes inteligentes no eixo y (esses recursos, obviamente, não estão presentes no MWE).

Poucos outros comentários:

Não é garantido que esta coluna de exceção esteja no final do gráfico ... portanto, os ajustes manuais para forçar a série a mudar de cor e inverter a ordem, deixando o espaço extra no lado direito não são confiáveis.

Eu tentei simular os dados como um 0 constante, de modo que a série "esteja presente", mas invisível, mas como seria de esperar, a ordem da série c (Não, Sim) faz com que isso pule um espaço que também é inaceitável. É assim que esta mesma pergunta foi respondida aqui, mas infelizmente não funciona para mim com minhas restrições:Largura consistente para geom_bar no caso de dados ausentes eIncluir espaço para o nível de fator ausente usado na estética de preenchimento no geom_boxplot

Também tentei fazer isso com facetas, mas surgiram vários problemas, incluindo quebras de linha e erros nas anotações adicionadas ao eixo x.

MWE:

library(ggplot2)

print("Program started")

x <- c("1","2","3","1","2","3","4")
s <- c("No","No","No","Yes","Yes","Yes","Yes")
y <- c(1,2,3,2,3,4,5)
df <- as.data.frame(cbind(x,s,y))

print(df)

gg <- ggplot(data = df, aes_string(x="x", y="y", weight="y", ymin=paste0("y"), ymax=paste0("y"), fill="s"));
dodge_str <- position_dodge(width = NULL, height = NULL);
gg <- gg + geom_bar(position=dodge_str, stat="identity", size=.3, colour = "black")

print(gg)

print("Program complete - a graph should be visible.")

questionAnswers(2)

yourAnswerToTheQuestion