graphsketcher / GraphSketcher

A fast, simple graph drawing and data plotting app for OS X and iPad.
1.62k stars 136 forks source link

Negative Data Visualisation #20

Open romant opened 9 years ago

romant commented 9 years ago

Adding data with oscillations of extreme(ish) points, renders the line to be below the axis, even though the values represented on the Y-axis are "0".

image

Verified this to be the same on the 'old' Omni version as well.

Is this a bug or is it functioning as designed given the smoothing extrapolation carried out by the line algorithm?

Thank you.

dmessent commented 9 years ago

It's functioning as designed, though that doesn't mean that someone couldn't make a modification to the algorithm that might give you results closer to what you desire. Here is what we used to tell customers about this issue at omni:

OmniGraphSketcher always chooses the curve that mostly smoothly connects all points in a given line, and this is intentional. If the data points you are connecting truly represent a continuously-varying quantity, then there is no reason to assume that the quantity which the curve represents would never go outside the minimum or maximum of the recorded data points.

Every curve algorithm necessarily makes assumptions about how to interpolate between each data point, and of course those assumptions may or may not be correct in a given situation. For example, you may have reason to believe that your curve remains within some minimum or maximum values, or is symmetrical, or does not have slopes above a certain steepness. OGS is not designed to handle any of these sophisticated constraints.

If you are really sure that your curves should not go beyond the bounds of your data points, then it may be best to simply use straight segments instead of curved ones. If you are not plotting data but rather sketching your own curve, then you can more closely approximate the curves you want by placing more intermediate points, as shown here:

http://forums.omnigroup.com/showthread.php?t=13047