在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();
}
将显示以下内容:
如您所见,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
。显然这是不正确的。我可以在numDec
添加1,但这会显示XAxis的无用信息(0,20; 0.40 ...)
我知道如果我使用像10/3d
这样的值作为主要步骤,我将从不能够丢失信息但我宁愿显示6.7而不是7(减少错误)。
有没有办法解决这个问题?