I have an assignment which requires drawing graphs on iPhone and iPad that in a worst case scenario might consist of multiple millions of points.
Shinobi charts seem to be the best high performance chart drawing framework for iOS out there, however it becomes unusable at a few hundred thousand points (on iPhone4), which isn’t good enough.
It seems to me that shinobi is rendering all the points that have been passed through
- (id<SChartData>)sChart:(ShinobiChart *)chart dataPointAtIndex:(int)dataIndex forSeriesAtIndex:(int)seriesIndex
regardless of zoom levels. And it seems to be exactly what hogs up all the performance.
Needless to say that rendering a graph consisting of million points on a device that has 640 pixel wide screen is also completely useless since all that the end user sees is basically a blob.
Is there any way I can draw, say every 1000th point out of my million point array when user is fully zoomed out, every single point when fully zoomed in and use some in-between values at other zoom levels?
Or if that isn’t possible perhaps there is a way I can gracefully swap/ insert/ remove graphs when zoom level changes without fully reloading the entire chart view and breaking interactivity?
I am fairly new to shinobi, so I could easily have missed an obvious way to do this.
Basically my question amounts to: Do I have any control over how many lines are actually rendered?/ How do I draw an interactive multi-million point chart?