我正在尝试使用从C#.NET中的数据库中提取的数据创建一个简单的饼图。我使用了以下代码 -
string[] xAxis = { "Banana", "Mango", "Apple" };
double BananaPercentage= 40;
double MangoPercentage= 30;
double ApplePercentage = 30;
double[] Percentage = { BananaPercentage, MangoPercentage, ApplePercentage };
Color[] PieColors = { Color.Green, Color.Red, Color.Gray };
chart1.Series[0].Label = "#PERCENT";
chart1.Series[0].LegendText = "#AXISLABEL";
//chart1.Series[0].Points[0].Color = PieColors[0];
chart1.Series[0].Points.DataBindXY(xAxis, Percentage);
它显示具有正确值的饼图。但是当我尝试为香蕉(绿色),芒果(红色)和苹果(灰色)分配特定颜色时,它显示错误"索引超出范围。必须是非消极的......"。 任何人都可以给我任何暗示这里有什么问题吗?
答案 0 :(得分:3)
“索引超出范围......”是因为chart1.Series[0].Points[0]
,尤其是.Points[0]
。不是因为PieColors[0]
。如果您想进一步使用它们或者想要更改它们的颜色,您应该先添加一些点。例如:
int index = chart1.Series[0].Points.AddXY(x, y);
然后你可以这样做:
chatr1.Series[0].Points[index].Color = PieColors[0]; //or whatever color
在您的情况下,问题是,在尝试分配Point的颜色后,将点绑定到chart1.Series[0].Points
。试着改变这个:
chart1.Series[0].Label = "#PERCENT";
chart1.Series[0].LegendText = "#AXISLABEL";
chart1.Series[0].Points[0].Color = PieColors[0];
chart1.Series[0].Points.DataBindXY(xAxis, Percentage);
要
chart1.Series[0].Label = "#PERCENT";
chart1.Series[0].LegendText = "#AXISLABEL";
chart1.Series[0].Points.DataBindXY(xAxis, Percentage);
chart1.Series[0].Points[0].Color = PieColors[0];
chart1.Series[0].Points[1].Color = PieColors[1];
chart1.Series[0].Points[2].Color = PieColors[2];
如果你想改变系列颜色而不是Point,你可以写一些类似的东西:
chart1.Series[0].Color = Color.Red; //or any other color, maybe from PieColor
答案 1 :(得分:0)
this.CategoryGraphChart.Series [“Categories”]。Points.AddXY(test.ToString()+“(”+ number +“)”,number);
CategoryGraphChart.Palette = ChartColorPalette.None;
CategoryGraphChart.PaletteCustomColors = new Color [] {Color.BlanchedAlmond,Color.Blue,Color.Yellow};
此代码将有效......