Stacked category plot with z wave

I am new to using Igor and am trying to create the attached graph. Unfortunately, I am having little success. Is there a way to do this without manually programming it as an image plot? In either scenario, how would I go about recreating this graph?
This can be done by combining 4 category plots in one graph (using multiple bottom axes, one per category plot).

The stacked bars can be done by using either Draw to Next Grouping (what I used) or Stack on Next, depending on what data you're starting with.

The coloring/shading can be done using color as f(z).

Here's the recreation macro of an example of only one of the four category plots:

Window Graph0() : Graph
    PauseUpdate; Silent 1       // building window...
    Display /W=(96,176.75,490.5,485) wave4,wave3,wave2,wave1,wave0 vs textWave0
    ModifyGraph rgb(wave3)=(65280,0,52224),rgb(wave2)=(0,12800,52224),rgb(wave1)=(0,52224,0)
    ModifyGraph hbFill(wave3)=2,hbFill(wave2)=2,hbFill(wave1)=2,hbFill(wave0)=2
    ModifyGraph toMode=1
    ModifyGraph zColor(wave4)={wave4fz,0,8,Grays,1},zColor(wave3)={wave2fz,0,8,Grays,1}
    ModifyGraph zColor(wave2)={wave2fz,0,8,Grays,1},zColor(wave1)={wave1fz,0,8,Grays,1}
    ModifyGraph zColor(wave0)={wave0fz,0,8,Grays,1}
    SetAxis/A/E=1 left
EndMacro


The fake data I used was this:
textWave0   wave0   wave1   wave2   wave3   wave4   wave0fz wave1fz wave2fz wave3fz wave4fz
E       1   2   4   10  20  4   2   2.8 1.5 0.5
NE      1   2   4   10  20  7   6   1   2.5 1.1
NNE     1   2   4   10  20  7.5 6   3   2.8 1.7


Note the trace order: I put the waves with the biggest values in the "back" by appending them to the graph before the waves with smaller values.

Software Engineer, WaveMetrics, Inc.
fzCategoryPlot.png (42.7 KB)