How to get the value of single pie slice using code


Author
Message
Alan Hubbard
Alan Hubbard
Forum Newbie (1 reputation)Forum Newbie (1 reputation)Forum Newbie (1 reputation)Forum Newbie (1 reputation)Forum Newbie (1 reputation)Forum Newbie (1 reputation)Forum Newbie (1 reputation)Forum Newbie (1 reputation)Forum Newbie (1 reputation)
Group: Forum Members
Posts: 5, Visits: 28
Hi
I have a requirement to show the top 10 pie slices and group all the rest together in one large slice. I need to add all the values for the large slice together, but I'm having difficulty accessing the values. Any tips/pointers are welcome. Thanks.
Here's my code:

double dLargeSliceValue = 0;
for (int i = pieSeries.GetDataPointCount(); i >= 0; i--)
  {
    dLargeSliceValue = dLargeSliceValue + pieSeries.Values[i].Value;
    if (i>9)
      { //group
        //add to value
        dLargeSliceValue = dLargeSliceValue + (double)pieSeries.Values[i]; /* this does not work */
        //remove initial slice
        pieSeries.RemoveDataPointAt(i);
      }
      else
      { //assign color
        pieSeries.FillStyles[i] = new NColorFillStyle(colorList[i]);
      }
  }
  // add a large slice
   NDataPoint dp = new NDataPoint(dLargeSliceValue, groupLabel);
   dp[DataPointValue.PieDetachment] = 1;
   pieSeries.AddDataPoint(dp);
Nevron Support
Nevron Support
Supreme Being (4.5K reputation)Supreme Being (4.5K reputation)Supreme Being (4.5K reputation)Supreme Being (4.5K reputation)Supreme Being (4.5K reputation)Supreme Being (4.5K reputation)Supreme Being (4.5K reputation)Supreme Being (4.5K reputation)Supreme Being (4.5K reputation)
Group: Administrators
Posts: 3.1K, Visits: 4.1K
Hi Alan,

The most obvious problem with that code is that the index is incorrect:
int i = pieSeries.GetDataPointCount()
initializes i with an index which is outside the values bounds - it should be:
int i = pieSeries.GetDataPointCount() - 1

We tested with the following code:

   nChartControl1.Panels.Clear();

   NPieChart pieChart = new NPieChart();
   nChartControl1.Panels.Add(pieChart);


   NPieSeries pieSeries = new NPieSeries();
   pieChart.Series.Add(pieSeries);

   for (int i = 0; i < 20; i++)
   {
    pieSeries.Values.Add(i);
   }

   double dLargeSliceValue = 0.0;
   NChartPalette chartPalette = new NChartPalette(ChartPredefinedPalette.Autumn);
   List<Color> colorList = chartPalette.SeriesColors;

   for (int i = pieSeries.GetDataPointCount() - 1; i >= 0; i--)
   {
    if (i > 9)
    { //group
     //add to value
     dLargeSliceValue = dLargeSliceValue + (double)pieSeries.Values[i]; /* this does not work */
     //remove initial slice
     pieSeries.RemoveDataPointAt(i);
    }
    else
    { //assign color
     pieSeries.FillStyles[i] = new NColorFillStyle(colorList[i % colorList.Count]);
    }
   }
   // add a large slice
   NDataPoint dp = new NDataPoint(dLargeSliceValue, "Grouped");
   dp[DataPointValue.PieDetachment] = 1;
   pieSeries.AddDataPoint(dp);

and it was working properly. Let us know if you meet any problems or have any questions.



Best Regards,
Nevron Support Team


Alan Hubbard
Alan Hubbard
Forum Newbie (1 reputation)Forum Newbie (1 reputation)Forum Newbie (1 reputation)Forum Newbie (1 reputation)Forum Newbie (1 reputation)Forum Newbie (1 reputation)Forum Newbie (1 reputation)Forum Newbie (1 reputation)Forum Newbie (1 reputation)
Group: Forum Members
Posts: 5, Visits: 28
Great, that worked, thanks!
GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Similar Topics

Reading This Topic
1 active, 1 guest, 0 members, 0 anonymous
No members currently viewing this topic!

Login

Explore
Messages
Mentions
Search