Line chart with groping seriesMapping.GroupingSettings.GroupDescriptors

9 posts, 0 answers
  1. Dhaval
    Dhaval avatar
    17 posts
    Member since:
    Feb 2011

    Posted 09 Feb 2011 Link to this post

    Hi All,

    Status (string)
    Stage (string)
    Eatimated Revenue (Double)

    Whenever i use group data with Stage or status and create line chart it's give me the POINT
    DOESN'T display line between two POINT. I want to display line with different color according to group data.


    SeriesMapping seriesMapping = new SeriesMapping();
              
                if (listOpp != null)
                {

                    seriesMapping.SeriesDefinition = new LineSeriesDefinition();

                    if (ddlchartby.SelectedItem.ToString() == "Status")
                    {
                        seriesMapping.GroupingSettings.GroupDescriptors.Add(new ChartGroupDescriptor("Status"));
                        seriesMapping.ItemMappings.Add(new ItemMapping("Status", DataPointMember.XCategory));
                        seriesMapping.ItemMappings.Add(new ItemMapping("Status", DataPointMember.YValue, ChartAggregateFunction.Count));
                    }
                    else if (ddlchartby.SelectedItem.ToString() == "Stage")
                    {
                        seriesMapping.GroupingSettings.GroupDescriptors.Add(new ChartGroupDescriptor("Stage"));
                        seriesMapping.ItemMappings.Add(new ItemMapping("Stage", DataPointMember.XCategory));
                        seriesMapping.ItemMappings.Add(new ItemMapping("Stage", DataPointMember.YValue, ChartAggregateFunction.Count));
                    }
                    radChart.SeriesMappings.Clear();
                    radChart.SeriesMappings.Add(seriesMapping);
                    List<CampaignChartModel> listchart = new List<CampaignChartModel>();
                    foreach (CrmOpportunity opp in listOpp)
                    {
                        listchart.Add(new CampaignChartModel(Convert.ToDouble(opp.EstimatedRevenue), opp.Status, opp.Stage));
                    }
                    this.radChart.ItemsSource = listchart;

                }

    I have attached two image
    LINE-CHART.jpg - I get
    LINE-CHART-COPY.jpg - I want


    Thanks,
  2. Tim
    Tim avatar
    85 posts
    Member since:
    Aug 2008

    Posted 10 Feb 2011 Link to this post

    I think you're missing something.  Don't you have some kind of "value" for the YAxis?  For example, Stage and Status are probably both "textual" data.  You need some kind of numerical data field (value?).  In which case you can add multiple Groupings (ex. Group By Stage, Status and YAxis = Total of Value field).  What you're doing here is not how the chart should be used (unless of course both Stage and Status columns of your data source are the number of items in those Stages and Status, but even then your chart won't make sense).

    My suggestion is to add a new field to your data source "value" or "ItemCount" and bind that to the YAxis.
  3. DevCraft banner
  4. Dhaval
    Dhaval avatar
    17 posts
    Member since:
    Feb 2011

    Posted 11 Feb 2011 Link to this post

    Hi,

    Thanks for your quick reply.

    Here is my code :

    <UserControl x:Class="SilverlightApplication3.line"
        xmlns:telerikChart="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls.Charting"
        mc:Ignorable="d"
        d:DesignHeight="300" d:DesignWidth="400">
     
        <Grid x:Name="LayoutRoot" Background="White">
            <telerikChart:RadChart x:Name="radChart" d:LayoutOverrides="Width, Height" BorderThickness="5" />
        </Grid>
    </UserControl>
    SeriesMapping seriesMapping = new SeriesMapping();
                seriesMapping.SeriesDefinition = new LineSeriesDefinition();
     
               
                    seriesMapping.GroupingSettings.GroupDescriptors.Add(new ChartGroupDescriptor("Status"));
                    //seriesMapping.GroupingSettings.GroupDescriptors.Add(new ChartGroupDescriptor("Stage"));
                    //seriesMapping.GroupingSettings.ShouldCreateSeriesForLastGroup = false;
                    seriesMapping.ItemMappings.Add(new ItemMapping("Status", DataPointMember.XCategory));
                    seriesMapping.ItemMappings.Add(new ItemMapping("Status", DataPointMember.YValue, ChartAggregateFunction.Count));
                    radChart.SeriesMappings.Clear();
                    radChart.SeriesMappings.Add(seriesMapping);
     
                    //public ProductSales(Double estimaterevenue,string stage , string status)
     
                    List<ProductSales> persons = new List<ProductSales>();
                    persons.Add(new ProductSales(1000, "Preliminary Quoted", "In Progress"));
                    persons.Add(new ProductSales(3000, "Preliminary Quoted", "In Progress"));
                    persons.Add(new ProductSales(2000, "Meeting Arranged", "Not Started"));
                    persons.Add(new ProductSales(5000, "Meeting Arranged", "In Progress"));
                    persons.Add(new ProductSales(7000, "Preliminary Quoted", "Not Started"));
                    persons.Add(new ProductSales(8000, "Rewise Quote", "Completed-won"));
                    persons.Add(new ProductSales(12000, "Rewise Quote", "Not Started"));
                    persons.Add(new ProductSales(5000, "Meeting Arranged", "Not Started"));
     
                    this.radChart.ItemsSource = persons;

    Here output will be fine but i have only one issue
    it's display points which are not connected with line
    I have also try

    //seriesMapping.GroupingSettings.GroupDescriptors.Add(new ChartGroupDescriptor("Stage"));
                    //seriesMapping.GroupingSettings.ShouldCreateSeriesForLastGroup = false;

    add this code above source code but not get proper output

    Thanks,


  5. Dhaval
    Dhaval avatar
    17 posts
    Member since:
    Feb 2011

    Posted 18 Feb 2011 Link to this post

    Hi All,

    If any one got the same issue so pls help me on that,
    It's very urgent.

    I have posted sample xaml and c# file code, so you can easily identify my issue.

    Thanks,

  6. Nikolay
    Admin
    Nikolay avatar
    385 posts

    Posted 21 Feb 2011 Link to this post

    Hello Dhaval,

    The dots in your sample are not connected because they are from two different Line series, with one point each. You can achieve the desired behavior by creating one Line series with two points and use the LegendDisplayMode property, instead of grouping. Please, note that you would also need a numeric value for the mapping to DataPointMember.YValue. Here is a sample code snippet:
    SeriesMapping seriesMapping = new SeriesMapping(); 
    seriesMapping.SeriesDefinition = new LineSeriesDefinition(); 
    seriesMapping.ItemMappings.Add(new ItemMapping("Stage", DataPointMember.XCategory)); 
    seriesMapping.ItemMappings.Add(new ItemMapping("Score", DataPointMember.YValue)); 
    seriesMapping.ItemMappings.Add(new ItemMapping("Stage", DataPointMember.LegendLabel)); 
    seriesMapping.SeriesDefinition.LegendDisplayMode = LegendDisplayMode.DataPointLabel; 
    RadChart1.SeriesMappings.Add(seriesMapping);

    Hope this helps.

    Greetings,
    Nikolay
    the Telerik team
  7. Dhaval
    Dhaval avatar
    17 posts
    Member since:
    Feb 2011

    Posted 21 Feb 2011 Link to this post

    Hi Nikolay,

    I got your point but i want to display line in between two point which is from different Line series with different line color.

    Thanks,
  8. Nikolay
    Admin
    Nikolay avatar
    385 posts

    Posted 21 Feb 2011 Link to this post

    Hello Dhaval,

    Please, find attached a small sample project, which demonstrates how to achieve this. Attached is also the output. Please, note that you cannot connect the labels of the series, but only the pointmarks.

    All the best,
    Nikolay
    the Telerik team
    Registration for Q1 2011 What’s New Webinar Week is now open. Mark your calendar for the week starting March 21st and book your seat for a walk through all the exciting stuff we ship with the new release!
  9. Dhaval
    Dhaval avatar
    17 posts
    Member since:
    Feb 2011

    Posted 01 Mar 2011 Link to this post

    did you mean Grouping is not possible in line chart?

    I refer your code but what about this line of code

    "seriesMapping.GroupingSettings.GroupDescriptors.Add(new ChartGroupDescriptor("Status"));"

    i need to add group by "Status" in LineSeriesDefinition.

    Thanks,
  10. Ves
    Admin
    Ves avatar
    2879 posts

    Posted 04 Mar 2011 Link to this post

    Hi Dhaval,

    Grouping is not related to the series type. Grouping is performed over data and influences how the resulting chart items (bars, line points, bubbles, etc.) are grouped into series. Grouping is available for line charts. Note, that if you have two records with different value for the  "Status" column/property, you will get two DataSeries with one item each. And the paradigm of line chart dictates showing a line between points of the same series. This is why you would get only points with no connecting line.

    You can set the seriesMapping.GroupingSettings.ShouldFlattenSeries property to true in order to get a flat series with multiple items (as shown in this example) or remove the grouping at all. Then you can set the SeriesDefinition.LegendDisplayMode  to LegendDisplayMode.DataPointLabels. This will force the chart to show an item in the legend for each datapoint within the series and in addition each pointmark will be drawn with its own color according to the palette.

    Kind regards,
    Ves
    the Telerik team
    Registration for Q1 2011 What’s New Webinar Week is now open. Mark your calendar for the week starting March 21st and book your seat for a walk through all the exciting stuff we ship with the new release!
Back to Top
DevCraft banner