This specific chart is done with Highcharts, which is also our choice as we have some needs not fulfilled by Sencha's charts (like having more than two axes, etc.).
That said, it is possible to draw over a Sencha chart, it was among my first experiments with them, as we need markers and range markers (horizontal ones).
Here is was I did, perhaps you can adapt to vertical & interactive display.
Note that this code must be called after the chart have been drawn, so we can get the geometry of the chart elements (bounding boxes and such).
public void AddMarks()
PreciseRectangle prL = m_leftAxis.getBBox();
int dashSpace = 2 * m_leftAxis.getDashSize();
PreciseRectangle prR = m_rightAxis.getBBox();
// System.out.println("Left: " + prL + "\nDash: " + dashSpace);
// System.out.println("\nRight: " + prR);
PathSprite ps = new PathSprite();
PathCommand cs = new MoveTo( prL.getX() + dashSpace, prL.getY() + 2 * prL.getHeight() / 3 );
PathCommand ce = new LineTo( prR.getX(), prL.getY() + 2 * prL.getHeight() / 3 );
ps.addCommand( cs );
ps.addCommand( ce );
ps.setStroke( RGB.BLUE );
m_chart.addSprite( ps );
double w = prR.getX() - ( prL.getX() + dashSpace );
double h = prR.getHeight() / 5;
double x = prL.getX() + dashSpace;
double y = prL.getY() + prL.getHeight() / 4;
RectangleSprite rs = new RectangleSprite( w, h, x, y );
rs.setStroke( new RGB( "#FFEE55" ) );
rs.setFill( RGB.GREEN );
rs.setFillOpacity( 0.3 );
m_chart.addSprite( rs );