需要您的建议!

我使用TickCreationFunc和LabelTransformFunc在XAxis上显示时间轴

像这样:

var plotCube = new ILPlotCube(tag, true);

List<Tuple<double, string>> ticks = null;

plotCube.Axes.XAxis.Ticks.TickCreationFunc = (min, max, qty) =>
{
    ticks = AxisHelper.CreateUnixDateTicks(min, max, qty).ToList();

    return ticks.Select(x => (float)x.Item1).ToList();
};

plotCube.Axes.XAxis.Ticks.LabelTransformFunc = (ind, val) =>
{
    if (ticks != null)
        return ticks[ind].Item2;
    else
        return null;
};

plotCube.Axes.XAxis.ScaleLabel.Visible = false; //does not help


结果相当不错,但是我找不到去除刻度标签的方法



两个侧面的问题:

1)VS显示警告“ ILNumerics.Drawing.Plotting.ILTickCollection.TickCreationFunc”已过时:““改用TickCreationFuncEx!”。但是,永远不会调用TickCreationFuncEx。

2)有没有办法告诉ILNumerics不要缩写刻度号?

感谢你的帮助!

最佳答案

此警告很重要。如果使用新的TickCreationFuncEx,则刻度标签应消失。界面非常相似。但是您的函数必须返回IEnumerable<ILTick>

var plotCube = ilPanel1.Scene.First<ILPlotCube>();

List<Tuple<double, string>> ticks = null;

plotCube.Axes.XAxis.Ticks.TickCreationFuncEx =
    (float min, float max, int qty, ILAxis axis, AxisScale scale) => {
        ticks = CreateUnixDateTicks(min, max, qty).ToList();

        return // return IEnumerable<ILTick> here!
};
// you should not need this
//plotCube.Axes.XAxis.ScaleLabel.Visible = false;

不能完全禁用缩写。但是您可以指定要显示的位数。直到4.7(由于错误),您将必须使用以下命令:

ilPanel1.SceneSyncRoot.First<ILPlotCube>().Axes.XAxis.Ticks.MaxNumberDigitsShowFull = 10;


从4.8版开始,您将不再需要SceneSyncRoot,并且可以更直接一些:

ilPanel1.Scene.First<ILPlotCube>().Axes.XAxis.Ticks.MaxNumberDigitsShowFull = 10;
// or in your case just
plotcube.Axes.XAxis.Ticks.MaxNumberDigitsShowFull = 10;



注意:代码中使用的是XAxis,而不是YAxis acc。以你的例子

关于c# - ILNumerics轴配置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29505149/

10-10 18:13