更改某些图表点的颜色

时间:2014-11-04 11:55:17

标签: c# winforms graph colors charts

我在更改图表中的颜色时遇到问题。以下代码:

chart1.Series["Test"].Color = Color.Red;
int start = array1.Length;
for (int i = 0; i < chart1.Series["Test"].Points.Count; i++)
{
      if (i >= start)
          chart1.Series["Test"].Points[i].Color = Color.Green;
      chart1.Series["Test"].Points.AddXY(x_axis[i], y_axis[i]);

}

chart1.Series["Test"].Points.DataBindXY(x_axis, y_axis);
chart1.Series["Test"].ChartType = SeriesChartType.Spline;

案例:我有两个数组 - 一个用于x轴,另一个用于y轴。假设它们的长度为32.我有另一个长度为12的数组(不重要)。现在我希望我的图形在第12点之后改变颜色。我怎样才能做到这一点?上面的代码不起作用。图表保持一种颜色。

4 个答案:

答案 0 :(得分:1)

您可以通过在绑定数据后为每个数据点重复循环来更改某些数据点的颜色。

Points pts = (Microsoft.Office.Interop.Excel.Points)series.Points(Type.Missing);
 foreach (Point pt in pts) { if(yourcondition) {
    pt.Border.Color = (int)XlRgbColor.rgbDarkOrange;
    pt.MarkerBackgroundColor = (int)XlRgbColor.rgbDarkOrange;
    pt.MarkerForegroundColor = (int)XlRgbColor.rgbDarkOrange;
  }
 }

答案 1 :(得分:0)

我不知道你的系列在执行循环时有多少点以及它们来自哪里但是通过DataBindXY方法删除所有以前的数据点并且自动创建新的绑定数据点颜色(据我所知,DataBind的工作)

也许你应该尝试在DataBindXY和&#34; post-color&#34;之后循环数据点。要点。

答案 2 :(得分:0)

解决!我不得不循环:

            for (int i = 0; i < array1.Length; i++)
                {
                    chart1.Series["Test"].Points[i].Color = Color.Blue;

                }

图表必须先绑定。

答案 3 :(得分:0)

此外,如果您只想突出显示(红色)图表中的某些数据,则可以使用以下方式:

        for (int i = 0; i < 10; i++)
        {
            string test = chartLeaderBoard.Series["Active Tasks Count"].Points[i].XValue.ToString();

            if (test == selectedUser)
            {
                chartLeaderBoard.Series["Active Tasks Count"].Points[i].Color = Color.Red;
            }
            else
            {
                chartLeaderBoard.Series["Active Tasks Count"].Points[i].Color = Color.Blue;
            }            
        }

在我的情况下,字符串selectedUser = dataGridViewLiderBoard.Rows [currentRow] .Cells [0] .Value.ToString();

由于该图表基于datagridview,因此我在其中做了一些其他操作来获取它。