-
Notifications
You must be signed in to change notification settings - Fork 603
Description
Key concepts:
(1) as mike.lischke indicated why would we ever need to return more points than there are pixels?
(2) our plot is only a window into the full data set
(3) when zoomed fully out the window covers the full data set.
(4) when zoomed-in the window is defined by scale along with offset in x and y
My thinking is this: If the data source is informed plot area size, scale and offset changes it can do whatever reduction is necessary all external to this wonderful library.
As was hedged at in the Point Culling issue: how this would be done is entirely unique to the type of data being shown. Techniques like Decimation, averaging, random sampling, are all useful but are unique to the types of data we are trying to display as these choices can obscure or just badly mangle the data if used in the wrong context.
If you are looking for a large sample problem for which you all have hardware so you can gather the data you need look no further than to Core Motion and our Accelerometer hardware. This produces samples of X,Y, and Z values in G at 20 millisecond intervals... this is 50 samples per second, 3,000 per minute or 180,000 samples per hour. Grab just ten minutes of this data and show it using this library and you have your test case. Now imagine how you would navigate hours or days of this data.
You might also notice pretty quickly that you are more interested in the X axis panning (moving along the timeline) and zooming (showing more detail in the timeline) than you are in seeing any zoom or pan changes made to the Y axis. Any time we are showing strip-chart like data the Y axis changes are nearly always of less interest.
So, i offer this as food for thought... altering the API for interaction with the underlying data set can solve all of the large data set issues by allowing the application to do context specific data reduction guided by the plotting effort and user interaction with the plots. Using this technique the data handed off to be plotted is never large data, it is only ever that which is needed.