An example of plotting a large amount of time-series data in Core Plot
C++ C Objective-C
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
BigData.xcodeproj
English.lproj
.gitignore
BigData-Info.plist
BigDataAppDelegate.h
BigDataAppDelegate.m
BigDataController.h
BigDataController.m
BigDataModel.h
BigDataModel.mm
BigData_Prefix.pch
CADebugMacros.cpp
CADebugMacros.h
CAMath.h
CAStreamBasicDescription.cpp
CAStreamBasicDescription.h
README
SampleAudio.L.wav
SampleAudio.R.wav
main.m

README

Description
-----------

This example demonstrates one way of plotting a large amount of 
time-series data using smart data sampling and Core Plot.

The file being plotted is one channel of an uncompressed audio file in
WAV format.  The file was recorded at a standard 44.1KHz rate and is a 
little over 18 seconds long.  It has 806,400 samples.

Trying to plot all 806,400 samples using Core Plot takes several seconds
on OS X and also consumes a large amount of memory.  In all fairness, Core
Plot does a pretty good job given how much work it is being asked to do.

However, it is unnecessary effort since you would need over 300 
30" Cinema Displays lined up left to right in order to discern every 
data point.

This example application uses min/max sampling of the data set to generate
a fairly accurate representation of the data while keeping memory and 
CPU usage in check.  

The application queries the plot hosting view's width and samples the data 
set accordingly.  When the window is resized, the data set is resampled
and the plot is redrawn.  When you zoom in far enough so that the ratio
of viewable_samples to plot_view_width drops below 2, sampling is turned
off and the raw data points are fed to Core Plot.

Installation
------------
This example will compile as-is if you put it in the examples directory
of your core-plot distribution.

Otherwise, adjust the Build Settings to point to the correct location
of the Core Plot framework.

Acknowledgements
----------------
This post about using the ExtAudioFile API on CocoaDev was very helpful:
http://www.cocoadev.com/index.pl?ExtAudioFile


Author
------
Jeff Buck