折线图 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);
}
}
该示例使用上面的数据看起来像这样:
如您所见,这会根据需要显示缺少的起点和中断。
我想在折线图中添加折线。当没有要显示的 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);
}
}
该示例使用上面的数据看起来像这样:
如您所见,这会根据需要显示缺少的起点和中断。