包含NaN的数据

可以把这些数字放在里面double[]阵列:

  • Double.PositiveInfinity
  • Double.NegativeInfinity
  • Double.NaN.

⚠️ 不要绘制包含这些值的数据!

所有要打印的值都必须可转换为像素坐标,并且不能呈现这些特殊的浮点值。尝试打印包含这些值的数据可能会导致渲染瑕疵、意外的轴限制检测问题以及渲染期间的异常。

用LINQ隔离有限点

用户可以使用LINQ创建仅包含有限/可打印数据点的新阵列,然后打印这些数据点。

var plt = new ScottPlot.Plot(400, 300);

// create original data with unplottable values
double[] originalYs = { 3, double.NaN, 5, double.PositiveInfinity, double.NegativeInfinity, 4, 6 };
double[] originalXs = { 1, 2, 3, 4, 5, 6, 7 };

// Attempting to plot these arrays would throw an exception at render time
//plt.AddScatter(originalXs, originalYs);

// isolate and plot real data values
var plottableIndexes =
    Enumerable
    .Range(0, originalYs.Length)
    .Where(i => !double.IsNaN(originalYs[i]))
    .Where(i => !double.IsInfinity(originalYs[i]));
double[] plottableXs = plottableIndexes.Select(i => originalXs[i]).ToArray();
double[] plottableYs = plottableIndexes.Select(i => originalYs[i]).ToArray();
plt.AddScatter(plottableXs, plottableYs);

plt.Title("Data Containing NaN and Infinity");
plt.SaveFig("output.png");