如何在折线图c#中为负数据点绘制不同的颜色

时间:2017-02-22 12:46:47

标签: c# winforms datapoint

我想通过datagridview创建折线图我需要红色绘图线表示负值,绿色表示正值。我编写代码,但我只获得所有数据点的绿色。

foreach (DataGridViewRow row in dgvReport.Rows)
{ 
    decimal val = 0;
    val = Convert.ToDecimal(row.Cells[8].Value.ToString());

    if (val < 0)
    {
        Dchart.Series[0].Color = System.Drawing.Color.Red;
    }

    if (val > 0)
    {
        Dchart.Series[0].Color = System.Drawing.Color.Green;
    }

    Dchart.Series[0].Points.AddXY(row.Cells[0].Value.ToString(), row.Cells[8].Value.ToString());
    Dchart.ChartAreas[0].AxisX.Interval = 3;
}

1 个答案:

答案 0 :(得分:2)

您需要为每个DataPoint单独着色:

int index = Dchart.Series[0].Points.AddXY(row.Cells[0].Value,
                                          row.Cells[8].Value);
DataPoint newPoint = Dchart.Series[0].Points[index];
newPoint.Color = newPoint.YValues[0] < 0 ? Color.Red : Color.Green;

请注意,颜色只会进入一行!

另请注意,您的转换狂欢并非真正需要..

最后注意事项:您要将所有值添加为strings。这是一个严重的错误!这样做会丢失所有x值,并导致y值的不受控制的默认转换。

始终所有值添加为数字或DateTimes !!

如果您发现需要将单元格值objects转换为数字并将其作为一个整体创建DataPoint,那么在添加series.Add()之前最好包括颜色!< / p>