Cómo producir barras astackdas dentro de un gráfico de barras agrupado en R

Tengo el siguiente gráfico

test <- data.frame(person=c("A", "B", "C", "D", "E"), value1=c(100,150,120,80,150), value2=c(25,30,45,30,30) , value3=c(100,120,150,150,200)) 

Quiero trazar un gráfico de barras agrupado (horizontal) para cada persona donde una barra indica valor1 y la otra barra es stack de valor2 y valor3. ¿Hay alguna manera con la que puedo hacer esto usando ggplot2? ¿Puedo usar facetas para trazar estos gráficos individuales uno debajo del otro?

Esto es lo que se me ocurrió, similar a una solución propuesta aquí: barras astackdas dentro de un gráfico de barras agrupadas

  1. Derrita data.frame y agrega una nueva columna cat

     library(reshape2) # for melt melted <- melt(test, "person") melted$cat <- '' melted[melted$variable == 'value1',]$cat <- "first" melted[melted$variable != 'value1',]$cat <- "second" 
  2. Traza un gráfico de cat astackdo versus value , faceting por person . Es posible que deba ajustar las tags para obtener lo que desea:

     ggplot(melted, aes(x = cat, y = value, fill = variable)) + geom_bar(stat = 'identity', position = 'stack') + facet_grid(~ person) 

enter image description here