this gets close:
fig = plt.figure( figsize=(8, 4 ) )
ax = fig.add_axes( [.05, .1, .9, .85 ] )
ax.set_yticks( np.linspace(0, 200, 11 ) )
xticks = [ 2, 3, 4, 6, 8, 10 ]
xticks_minor = [ 1, 5, 7, 9, 11 ]
xlbls = [ 'background', '5 year statistical summary', 'future build',
'maximum day', '90th percentile day', 'average day' ]
ax.set_xticks( xticks )
ax.set_xticks( xticks_minor, minor=True )
ax.set_xticklabels( xlbls )
ax.set_xlim( 1, 11 )
ax.grid( 'off', axis='x' )
ax.grid( 'off', axis='x', which='minor' )
# vertical alignment of xtick labels
va = [ 0, -.05, 0, -.05, -.05, -.05 ]
for t, y in zip( ax.get_xticklabels( ), va ):
t.set_y( y )
ax.tick_params( axis='x', which='minor', direction='out', length=30 )
ax.tick_params( axis='x', which='major', bottom='off', top='off' )
text
,annotate
oraxis
andspines
(even if you don't show the actual axis associated with these two). Which will be easiest for you is dependent not on the picture you show, but on what you want to different items to register to (for both when you scale the plot and when you change the inputs). Currently, that's all unclear (ie, when you move '5 year Summary' moved wrt what?). – Intellect