Here is the Python code that will create what you are looking for. (The example uses 3 configurations, not 2, to make sure the code was pretty general.)
import matplotlib.pyplot as plt
import random
nconfigs, njobs, nservers = 3, 4, 4
width = .9/(nconfigs*njobs)
job_colors = [(0,0,1), (0,1,0), (1,0,0), (1,0,1)]
def dim(color, fraction=.5):
return tuple([fraction*channel for channel in color])
plt.figure()
x = 0
for iserver in range(nservers):
for ijob in range(njobs):
for iconfig in range(nconfigs):
color = dim(job_colors[ijob], (iconfig+2.)/(nconfigs+1))
plt.bar(x, 1.+random.random(), width, color=color)
x += width
x += .1
plt.show()
This code is probably pretty transparent. The odd term (iconfig+2.)/(nconfigs+1)is simply to reduce colors for different configurations, but to keep them bright enough so that colors can be distinguished.
:
alt text http://i28.tinypic.com/dgrnzk.png