【问题标题】:Change color of certain chart points更改某些图表点的颜色
【发布时间】:2014-11-04 11:55:17
【问题描述】:

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

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 点之后改变颜色。我怎样才能做到这一点?上面的代码不起作用。图表保持一种颜色。

【问题讨论】:

  • i &lt; chart1.Series[""].Points.Count; 如何在您的循环中工作。有空名的系列吗?
  • 抱歉 - 已编辑

标签: c# winforms graph colors charts


【解决方案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;
  }
 }

【讨论】:

    【解决方案2】:

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

    也许您应该尝试在 DataBindXY 之后循环遍历数据点并对这些点进行“后期着色”。

    【讨论】:

      【解决方案3】:

      解决了!我不得不循环:

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

      必须先绑定图表。

      【讨论】:

        【解决方案4】:

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

                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;
                    }            
                }
        

        在我的例子中 string selectedUser = dataGridViewLiderBoard.Rows[currentRow].Cells[0].Value.ToString();

        由于图表是基于 datagridview 的,我在其中做了一些额外的事情来获得它。

        【讨论】:

          猜你喜欢
          • 2016-03-13
          • 1970-01-01
          • 2013-11-30
          • 1970-01-01
          • 2018-03-07
          • 1970-01-01
          • 2012-05-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多