ComponentOne Chart for WPF and Silverlight
Chart for WPF and Silverlight / Chart Features / Trend Lines / Adding Trendlines to C1Chart
In This Topic
    Adding Trendlines to C1Chart
    In This Topic

    Adding a TrendLine is very similar to adding a second data series. C1Chart will automatically calculate and plot the trendline based on the values. By default, a trendline will have a Polynomial FitType with and Order of 2. The following code demonstrates adding a TrendLine:

    Visual Basic
    Copy Code
    'add trend line
    Dim tl As New TrendLine()
    tl.Label = "Trendline"
    tl.ConnectionStroke = New SolidColorBrush(Colors.Red)
    tl.XValuesSource = myXValues
    tl.ValuesSource = myValues
    chart.Data.Children.Add(tl)
    

     

    C#
    Copy Code
    //add trend line
    TrendLine tl = new TrendLine();
    tl.Label = "Trendline";
    tl.ConnectionStroke = new  SolidColorBrush(Colors.Red);
    tl.XValuesSource = myXValues;
    tl.ValuesSource = myValues;
    chart.Data.Children.Add(tl);
    

    You can see in the following image that the default trendline doesn't fit the data closely:

     

     

    You can get a better fit by changing the Order property. You can specify both the FitType and the Order properties to get the fit you're looking for:

    C#
    Copy Code
    TrendLine tl = new TrendLine();
    tl.Label = "Trend";
    tl.FitType = FitType.Polynom;
    tl.Order = 6;
    

     

     

    The data used in the pictured chart graphs gas prices with values taken every seven days. With this kind of data, a MovingAverage trendline is more appropriate. You can see how it fits the data in the following image:

     

     

    When setting up a Moving Average trendline, you must instantiate a new MovingAverage object and set the Period property. This property specifies the number of data points to use for the trendline. Since the gas price data is averaged every 7 days, a Period of 48 averages each year of data:

    C#
    Copy Code
    MovingAverage ma = new MovingAverage();
    ma.Label = "Moving Average";
    ma.Period = 48;
    ma.XValuesSource = days;
    ma.ValuesSource = price;
    ma.ConnectionStroke = new SolidColorBrush(Colors.Red);
    chart.Data.Children.Add(ma);
    

     

    See Also