折线图 Windows 表格,

Broken linechart Windows Form,

我想在折线图中添加折线。当没有要显示的 YValue 时,我将 YValue 设置为 double.NaN。

它工作正常,除了第一个点,它画了一条垂直线,如图所示。我怎样才能摆脱那个?

问题中没有代码,但如果您在图表系列的点 属性 上使用 DataBindXY 方法,它会自动与 double.NaN 一起使用,所以我假设您正在添加手动数据点。

在这种情况下,DataPoint 的 IsEmpty 属性 必须设置为 true。因此,如果您从 x/y 值创建 DatePoints(例如,从两个具有实际值的数组),您可以通过检查 y 值相应地设置 IsEmpty 属性:

 double.IsNaN(yValue)

一个简单的 self-contained 示例可能如下所示:

private readonly int[] _xArr = new int[] { 1, 2, 3, 4, 5 ,6, 7 };
private readonly double[] _yArr = new double[] { double.NaN, 0.9, 1.2, double.NaN, 1.3, 1.1, 1.4 };

private IEnumerable<DataPoint> DataPoints()
{
    return _xArr.Select((x, i) => new DataPoint(x, _yArr[i]) { IsEmpty = double.IsNaN(_yArr[i])});
}

为了完整起见,这里有一个简单的图表设置用于快速测试:

private void Form1_Load(object sender, EventArgs e)
{
    var series = chart1.Series[0];

    series.LegendText = "Some Chart";
    series.ChartType = SeriesChartType.Line;
    series.IsValueShownAsLabel = true;
    foreach(var dp in DataPoints())
    {
        series.Points.Add(dp);
    }
}

该示例使用上面的数据看起来像这样:

如您所见,这会根据需要显示缺少的起点和中断。