如何在折线图中为负数据点绘制不同的颜色c#
How to plot different colour for negative datapoint in line chart c#
我想通过 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;
}
您需要为每个 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()
添加之前包括颜色!
我想通过 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;
}
您需要为每个 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()
添加之前包括颜色!