Hi. I am trying to plot a line chart consisting of 50 series each with approx 4000 points. For this data set the chart uses more than 30 seconds to repaint on a fairly fast PC. For comparison, Excel repaints a chart with the same data in less than a second. Is the Chart component that much slower or am I doing something wrong?
I am using a DateTime x-axis and provides the data to the chart using my own implementation of IChartSeriesModel. I know that my datasource can provide the data a lot faster than the chart repaints, so this is not the bottleneck. I have also tried to use the built in series model and this didn''t seem to help. Is there anything else I can do to improve performance?
DJDavis Jebaraj Syncfusion Team May 18, 2005 04:47 PM
What is the type of Chart you are plotting? It is possible that Excel is grouping some of the points to form a smaller set of points that represent the outline of the rendered chart in case the screen real estate is too small to display all 4000 points at once on the screen. Essential Chart does not do such optimizations at present. We will work on adding this feature if you can tell us what type of Chart you are using.
ADAdministrator Syncfusion Team May 19, 2005 03:22 AM
Hi Davis. Thanks for your reply. I am using ChartSeriesType.Line and version 188.8.131.52.
I think that pooling the points is mainly of interest if the plot is smooth, i.e. little variation between neighboring points. This is normally not the case for my data. Also, when I have smooth data I will consider reducing the data set myself before handing it to the chart. Therefore, I don''t see the need for pooling in the chart. However, if the basic plotting speed can be improved, I would be very happy. In addition to charting large datasets as in the example above, I am interested in charting smaller datasets with "real time" performance.
Do you know where most of the time is spent by the chart? Is the time spent by the basic .net drawing functions or is it spent on some other calculations performed by the chart? In the first case I guess it would be hard to improve performance, but in latter case there should be room for improvement.
DJDavis Jebaraj Syncfusion Team May 23, 2005 11:33 AM
Thanks for the clarification. I have been working on the optmizations and I will update this thread when I have more information.
Thank you for your patience.
ADAdministrator Syncfusion Team June 24, 2005 06:56 AM
I am also interested in any chart optimizations you can do for the chart with many points. For example, I use a line chart to plot temperature vs time, and depending on settings, there may be a history of several thousand temperatures that are displayed on the chart. This is not critical for me, I can always limit the number of points, but the extra performance would certainly be nice and give better history plots.
ADAdministrator Syncfusion Team June 24, 2005 06:59 AM
Btw, I also use IChartSeriesModel, supplying both x and y.
SMSimon MartinJune 8, 2006 03:39 AM
I was wondering whether you would be able to help me with the following performance issue:
I have been trying to plot a timeseries with over 300 series, each with over 100 data points, using Syncfusion 184.108.40.206
On a reasonably fast machine, the chart is taking a couple of seconds to draw in the first place and a further couple of seconds to re-draw everytime the window containing the chart is re-sized or moved.
Is there anything that I can do to speed up the plotting of the chart and the the speed with which it refreshes when the chart is re-sized?
This is the code that I am using to add the data points:
foreach (TimeSeries series in TimeSeriesChart.Series)
// add series points
for (int year = TimeSeriesChart.StartYear; year <= TimeSeriesChart.EndYear; year++)
Many thanks for your help,
GMGeetha M Syncfusion Team June 9, 2006 07:02 AM
Thanks for bringing this issue to our attention. Could you please send us a simple sample application which illustrates your way of populating the data points to the chart so that it would help us to find a better solution?
Thanks for your interest in Syncfusion products.