使用对数比例将空点添加到图表

sj4*_*7sj 8 c# mschart

C# charts用来显示/比较一些数据。我将图形比例尺更改为logarithmic(由于我的数据点具有巨大差异),但是由于logarithmic比例尺不支持zero值,因此在这种情况下,我只想添加一个空白点(或跳过数据点)。我已经尝试了以下方法,但是没有任何效果,并且崩溃了:

if (/*the point is zero*/)
{
    // myChart.Series["mySeries"].Points.AddY(null);
    // or
    // myChart.Series["mySeries"].Points.AddY();
    // or just skip the point
}
Run Code Online (Sandbox Code Playgroud)

是否可以添加一个空白点或仅跳过一个点?

Ale*_*lex 5

我发现了两种解决问题的方法。

一种正在使用double.NaN(突然!):

if (myChart.ChartAreas[0].AxisY.IsLogarithmic && y == 0)
    myChart.Series["mySeries"].Points.AddY(double.NaN);
    // or ...Points.Add(double.NaN)
Run Code Online (Sandbox Code Playgroud)

看起来像零 在此处输入图片说明

就我而言,它不会因以下SeriesChartTypes 崩溃:

Column, Doughnut, FastPoint, Funnel, Kagi, Pie, Point, Polar, Pyramid, Radar, Renko, Spline, SplineArea, StackedBar, StackedColumn, ThreeLineBreak
Run Code Online (Sandbox Code Playgroud)

另一种方法是空点的内置概念:

if (myChart.ChartAreas[0].AxisY.IsLogarithmic && y == 0)
    myChart.Series["mySeries"].Points.Add(new DataPoint { IsEmpty = true });
Run Code Online (Sandbox Code Playgroud)

这似乎是一个缺失点(一个缺口): 在此处输入图片说明

就我而言,它不会因以下SeriesChartTypes 崩溃:

Area, Bar, Column, Doughnut, FastPoint, Funnel, Line, Pie, Point, Polar, Pyramid, Radar, Renko, Spline, SplineArea, StackedArea, StackedArea100, StackedBar, StackedBar100, StackedColumn, StackedColumn100, StepLine, ThreeLineBreak
Run Code Online (Sandbox Code Playgroud)

第二个方法感觉就像是正确的(设计)之一。在第一次一个看起来像一个黑客,那不经意的时候出现工作。