It seems to me that all of the items in your list can be accomplished using ShinobiCharts. Here is how:
1) You should be able to have the annotation view behind the graph line, but extends in front of the axis by setting the clipToBounds property on the glView of the canvas to NO like so:
chart.canvas.glView.clipsToBounds = NO;
2) Using a less abbreviated version of the date on the xaxis can be done by setting the date format on the axis using this code:
[[[chart xAxis].labelFormatter dateFormatter] setDateFormat:@"MMM dd, yyyy"];
3) The easiest way to only show x axis value where there is a data point would be to format the dates as previously shown and then set them as string in a SChartCategoryAxis which will only draw tickmarks at your specified values where as an SChartDateTimeAxis will create a set of tickmarks at interpolated values.
4) I am glad to hear you have managed to change the background color of the axis
Let me know you get on.