Шкала оси отображает неправильное значение

В ZedGraph вы можете легко нарисовать XY график. Давайте используем масштаб по умолчанию для оси X и пользовательский масштаб (от 0 до 10, основной шаг 2.5, второстепенный шаг 1) для Y, а затем перерисовываем график:

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();
}

Который будет отображать это:

Как вы видете, 3 а также 8 являются 2.5 а также 7.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, Очевидно, это не правильно. Я мог бы просто добавить 1 к numDec но это будет отображать бесполезную информацию для XAxis (0,20;0,40...)

Я знаю, что если я использую такие значения, как 10/3d В качестве основного шага я никогда не смогу потерять информацию, но я предпочел бы отображать 6,7 вместо 7 (уменьшите ошибку).

Есть ли способ это исправить?

0 ответов

Другие вопросы по тегам