轴刻度显示错误的值

时间:2016-04-13 14:41:48

标签: c# rounding zedgraph

在ZedGraph中,您可以轻松绘制XY图。让我们使用X轴的默认比例和Y的自定义比例(0到10,主要步骤2.5,次要步骤1),然后重绘图形:

public Form1()
{
    InitializeComponent();
    zedGraphControl1.GraphPane.YAxis.Scale.Min = 0;
    zedGraphControl1.GraphPane.YAxis.Scale.Max = 10;
    zedGraphControl1.GraphPane.YAxis.Scale.MajorStep = 2.5;
    zedGraphControl1.GraphPane.YAxis.Scale.MinorStep = 1;
    zedGraphControl1.AxisChange();
    zedGraphControl1.Invalidate();
}

将显示以下内容:

enter image description here

如您所见,38 2.57.5以错误的格式显示。以下是ZedGraph如何决定使用的格式:

internal void SetScaleMag(double min, double max, double step)
{
    // set the scale magnitude if required
    if (this._magAuto)
    {
        // Find the optimal scale display multiple
        double minMag = Math.Floor(Math.Log10(Math.Abs(this._min)));
        double maxMag = Math.Floor(Math.Log10(Math.Abs(this._max)));

        double mag = Math.Max(maxMag, minMag);

        // Do not use scale multiples for magnitudes below 4
        if (Math.Abs(mag) <= 3)
        {
            mag = 0;
        }

        // Use a power of 10 that is a multiple of 3 (engineering scale)
        this._mag = (int)(Math.Floor(mag / 3.0) * 3.0);
    }

    // Calculate the appropriate number of dec places to display if required
    if (this._formatAuto)
    {
        int numDec = 0 - (int)(Math.Floor(Math.Log10(this._majorStep)) - this._mag);
        if (numDec < 0)
        {
            numDec = 0;
        }

        this._format = "f" + numDec.ToString(CultureInfo.InvariantCulture);
    }
}

其中,f0。显然这是不正确的。我可以在numDec添加1,但这会显示XAxis的无用信息(0,20; 0.40 ...)

我知道如果我使用像10/3d这样的值作为主要步骤,我将从不能够丢失信息但我宁愿显示6.7而不是7(减少错误)。

有没有办法解决这个问题?

0 个答案:

没有答案