【问题标题】:ZedGraph: Custom Labels on XAxis.DateAsOrdinalZedGraph:XAxis.DateAsOrdinal 上的自定义标签
【发布时间】:2013-01-23 04:01:24
【问题描述】:

我对这个问题感到困惑:我有一个带有 ZedGraph 对象的 WinForm 绘制一条简单的曲线。它在每个点上方都有一个自定义文本对象“C”。当我将 XAxis.Type 更改为 DateAsOrdinal 时,“C”文本标签消失了。如何使用 DateAsOrdinal 获得“C”?

代码如下,任何人都可以尝试:

    private void DrawChart( ZedGraphControl zGraph ) {
        GraphPane pane = zGraph.GraphPane;
        pane.Title.Text = "My Sample Test";
        pane.XAxis.Title.Text = "Date";
        pane.YAxis.Title.Text = "Price";

        // Uncomment below line: all "C" labels disappear!
        //pane.XAxis.Type = AxisType.DateAsOrdinal;

        double x, y;
        PointPairList points = new PointPairList();
        DateTime day = new DateTime( 2012, 1, 1 );

        for ( int i = 0 ; i < 36 ; i++ ) {
            x = day.ToOADate();
            y = 1.5 + Math.Sin( (double)i * 0.2 );
            points.Add( x, y );

            // this label disappears when XAxis.Type = DateAsOrdinal!
            TextObj text = new TextObj( "C", x, y + 0.1, CoordType.AxisXYScale, AlignH.Center, AlignV.Center );
            text.ZOrder = ZOrder.A_InFront;
            text.FontSpec.Border.IsVisible = false;
            pane.GraphObjList.Add( text );

            day = day.AddDays( 1 );   // goto next day (x-coord)
        }

        LineItem curve = pane.AddCurve( "Stock", points, Color.Black, SymbolType.None );

        zGraph.AxisChange();
    }

【问题讨论】:

    标签: c# zedgraph


    【解决方案1】:

    试试

    new TextObj("C", i + 1, y + .....

    Ordinal XAxis 表示作为表达式意味着 x 值将运行 1、2、3...

    【讨论】:

    • 好的,这个快速破解修复了标签问题。它仍然不直观,因为之前只有一个声明 Points.Add(x, y); x 不在范围 { 1, 2, 3, ... } 我希望 Points 和 TextObj 能够始终如一地执行,但我想这是 ZedGraph 目前的一个怪癖。
    • 没有 hack 也没有怪癖。你选择了一个序数轴,zedgraph 应该做什么?没有人强迫你。 ;) 它仍然使用 OADate x 值来显示比例标签,所以它需要它们。
    • 恕我直言,我认为 ZedGraph 的设计可以改进:Point 和 TextObj 都是同一个 GraphPane 上的对象。给定相同的 x 和 y,我希望 Point(x,y) 和 TextObj(x,y) 都被绘制到相同的位置。我需要执行 Point(x=Date.ToOADate,y) 和 TextObj(x=i+1,y) 以使它们达到相同的水平位置,这是不直观的,尤其是当 Date.ToOADate 不等于 i +1 价值。
    • 如果它不是立即直观的,你会认为它是一个糟糕的设计,而不是由于你还没有体验过的好处,尽管你显然刚刚开始使用这个库。那是你的一个错误。库是开源的,可以改进,但这不是我建议你改变的东西,说得非常小心。不要期望它是一个 30 分钟的即插即用控件,而是非常可定制的。你不会在开车时得到羊排。
    猜你喜欢
    • 2013-09-25
    • 1970-01-01
    • 1970-01-01
    • 2021-11-03
    • 2012-07-13
    • 1970-01-01
    • 2014-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多