Trying to create an impossible graph? I want to create a graph, but I'm not sure if it even exists because I couldn't find any example that makes use of it.
To illustrate the problem, I'll make some data up. Let's say I want to represent the percentage of kids regarding the color of the hair (Blonde, Brown, Black, Albino, and Redhair) in four states (Vermont, Alaska, Florida, and California). 
I'd have something like this:
State <- c("Vermont", "Alaska", "Florida", "California")
Blond <- c(11, 19, 10, 2)
Brown <- c(14, 11, 50, 38)
Albino <- c(22, 45, 0, 22)
Black <- c(23, 5, 1, 0)
Redhair <- c(25, 20, 39, 38)

state_hair <- data.frame (State, Blond, Brown, Albino, Black, Redhair)

The graph I want would be the x axis with the states, the y axis divided in five panels (one for each color), and the percentage represented as a rectangle where the width is fixed, but the height is the percentage of kids with that hair color in that state.
I have drawn my idea of the graph (loosely based in the previous data).

Before and after transforming the data frame from wide to long (reshape2, melt), I've tried with lattice and ggplot2, both with boxplot and violin (panel.violin and geom_violin, respectively), but because there is just one value, it does not make much sense.
Would it be possible or there is any flaw I can't see.
 A: I can't offer any advice on ggplot, but to the terminology question: If all of the values in each state sum to 1, this would be called a normalized stacked bar chart.
A: Here is a possible solution in ggplot2. Could definitely use some cleaning up. Also, I'm not sure why I had to add the limits in the scale. Without them, extra categories were being added on the x and y axes.
Basically I converted the data frame to long format and changed the factors to numbers. I used those numbers to set the xmin, xmax, ymin and ymax of rectangles.
library(tidyr)
library(dplyr)
sh <- state_hair %>% gather(haircolor, percent, -State) %>% 
  mutate(hc = as.numeric(haircolor), st=as.numeric(State)) 

ggplot(sh, aes(xmin=st-.25, xmax=st+.25, ymax=hc+(percent/100), ymin=hc-(percent/100) )) + 
  geom_rect() +
  scale_x_discrete(labels=c("1"="Alaska","2"="California","3"="Florida","4"="Vermont"), 
    limits=c("1","2","3","4")) + 
  scale_y_discrete(labels=c("1" = "Blond", "2" = "Brown", "3" = "Albino", "4"="Black", "5" = "Redhead"),
    limits=c("1","2","3","4","5"))

