Code: Select all
Public Class Form1
Private m_XValues1 As New List(Of Double)
Private m_YValues1 As New List(Of Double)
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
GetData()
TChart1.Aspect.View3D = False
TChart1.Legend.Visible = False
Dim points As New Steema.TeeChart.Styles.Points()
TChart1.Series.Add(points)
Dim fastLine As New Steema.TeeChart.Styles.FastLine()
TChart1.Series.Add(fastLine)
Dim downSampling As New Steema.TeeChart.Functions.DownSampling(TChart1.Chart)
points.Add(m_XValues1.ToArray, m_YValues1.ToArray)
points.Active = False
downSampling.DisplayedPointCount = 5000
downSampling.Method = Steema.TeeChart.Functions.DownSamplingMethod.MinMaxFirstLastNull
fastLine.TreatNulls = Steema.TeeChart.Styles.TreatNullsStyle.DoNotPaint
fastLine.DataSource = points
fastLine.Function = downSampling
End Sub
Private Sub GetData()
Dim csv As String = "C:\Users\Public\Documents\downsample.csv"
Using tfp As New FileIO.TextFieldParser(csv)
tfp.SetDelimiters(","c)
tfp.TextFieldType = FileIO.FieldType.Delimited
Do Until tfp.EndOfData
Dim fields() As String = tfp.ReadFields
m_XValues1.Add(Double.Parse(fields(0)))
m_YValues1.Add(Double.Parse(fields(1)))
Loop
End Using
End Sub
Private Sub TChart1_UndoneZoom(sender As Object, e As EventArgs) Handles TChart1.UndoneZoom
TChart1(1).CheckDataSource()
End Sub
Private Sub TChart1_Zoomed(sender As Object, e As EventArgs) Handles TChart1.Zoomed
TChart1(1).CheckDataSource()
End Sub
End Class
However, this isn't the behavior I am seeing and I want to determine if I have misinterpreted the design of this function or if I am missing some detail in setting it up (or something else is happening).
I tested this function using one of our actual data sets containing 100000+ points in a single series. Here is the full data set that has been downsampled to 5000 points. It appears to have been correctly downsampled and achieves our goals:
Here is the plot after zooming into the highlighted region above with downsampling enabled, and "CheckDataSource" called in the "Zoomed" event:
For comparison, here is the same region zoomed in to the original source data without downsampling:
If you compare the original vs downsampled plot of the zoomed region, you can see that a great deal of detail has been lost in the downsampled plot. It appears to me that CheckDataSource is not re-calculating the downsampled plot to match the displayed region, it is simply displaying a zoomed version of the original 5000-point downsampling of the full data set.
I would appreciate any help in understanding what I am missing or misunderstanding here.
Thanks,
-Scott