How to fix ScatterLine performance issues?

3 posts, 0 answers
  1. Mitchell
    Mitchell avatar
    2 posts
    Member since:
    Jul 2017

    Posted 14 Jul 2017 Link to this post

    Hello,

    I am having trouble with slow down when loading series with a large number of points (>10,000). I have seen in other posts that the suggested solution is to manually aggregate out the data. I just have couple of questions in reference to this.

    1. Are there any other ways to increase performance? I have seen on posts in the WPF forum that there are graphics acceleration features available using Direct2D. Am I correct in understanding that these are not at all available in the Winforms version?

    2. If aggregating the data is the only way to reduce the number of rendered points, is it possible to load in removed data points when using the zoom feature to zoom in on sections of the data?

    Thank you for your help!

  2. Mitchell
    Mitchell avatar
    2 posts
    Member since:
    Jul 2017

    Posted 14 Jul 2017 in reply to Mitchell Link to this post

    Additionally, is there an example of how to use a custom renderer with a ScatterSeries? I think I understand the example in the documentation using a LineSeries, but I am unsure of how to do it with a scatter.

    Thank You!

    -Mitchell

  3. Dimitar
    Admin
    Dimitar avatar
    2918 posts

    Posted 17 Jul 2017 Link to this post

    Hi Mitchell,

    Thank you for writing.

    1. There is no way to use our controls with Direct2D. 

    2. Perhaps it would be better to use the drill down feature for this. This way you will be able to pass new data when needed. 

    3. You need to create a class that inherits ScatterLineSeriesDrawPart and then use it in a custom renderer like this:
    public class CustomCartesianRenderer : CartesianRenderer
    {
        public CustomCartesianRenderer(CartesianArea area) : base(area)
        {
        }
          
        protected override void Initialize()
        {
            base.Initialize();
      
            for (int i = 0; i < this.DrawParts.Count; i++)
            {
                ScatterSeriesDrawPart scatterPart = this.DrawParts[i] as ScatterSeriesDrawPart;
                if (scatterPart != null)
                {
                    this.DrawParts[i] = new CustomScatterSeriesDrawPart((ScatterLineSeries)scatterPart.Element, this);
                }
            }
        }
    }

    I hope this will be useful. Let me know if you have additional questions.

    Regards,
    Dimitar
    Progress Telerik
    Try our brand new, jQuery-free Angular 2 components built from ground-up which deliver the business app essential building blocks - a grid component, data visualization (charts) and form elements.
Back to Top