Zedgraph图表中X和Y的等比例

时间:2010-03-12 05:59:45

标签: scale zedgraph scatter

根据我对Zedgraph的经验,我无法设置X和Y轴的比例相同,以获得正确的散点图!假设我们有一个10x10m单元的正方形网格,其中每个单元格是1x1m的正方形。当我们尝试绘制这些数据的点时,输出是不可接受的,因为每个轴都缩放到不同的比例。当我们尝试调用Zoomall时会更糟,然后我们发现所有点都适合图表区域而不管它们的间距是否相等! 我希望有人能帮助我找到解决方案。虽然Zedgraph是灵活的库,但这是一个很大的错误!

3 个答案:

答案 0 :(得分:0)

对于任何Axis.Scale,Scale.IsAnyOrdinal是否为真?

当Scale.Type设置为AxisType.Text,Ordinal,DateAsOrdinal或LinearAsOrdinal时,ZedGraph似乎基于索引偏移而不是节点值来定位节点。

答案 1 :(得分:0)

这个问题很清楚。已经9岁了,但仍然.. 刚刚遇到并解决了在方形窗格中显示图形的问题。 (似乎是OP问题) 有点“粗糙”,并调用了冗余的重绘,但是完成了工作。

        //"GraphWinFormsHost" is my ZGraph container
        GraphWinFormsHost.SizeChanged += (sender, args) =>
        {
            //"IsEqualScale" is my property, indicating a square is needed
            if(_ChartData == null || !_ChartData.IsEqualScale)
                return;

            _ZedGraphControl.GraphPane.Chart.IsRectAuto = true;
            _ZedGraphControl.Refresh();

            //here, the graph pane is redrawn according to available space
            float x = _ZedGraphControl.GraphPane.Chart.Rect.X;
            float y = _ZedGraphControl.GraphPane.Chart.Rect.Y;
            float h = _ZedGraphControl.GraphPane.Chart.Rect.Height;
            float w = _ZedGraphControl.GraphPane.Chart.Rect.Width;
            float min = Math.Min(h, w);
            _ZedGraphControl.GraphPane.Chart.Rect = new RectangleF(x, y, min, min);
        };

答案 2 :(得分:0)

我最近不得不解决同样的问题。这对我有用:

zg1.AxisChange();
                
if (myPane.XAxis.Scale.Max > myPane.YAxis.Scale.Max) {
    myPane.YAxis.Scale.Max = myPane.XAxis.Scale.Max;
    myPane.YAxis.Scale.Min = myPane.XAxis.Scale.Min;
    myPane.YAxis.Scale.MajorStep = myPane.XAxis.Scale.MajorStep;
} else {
    myPane.XAxis.Scale.Max = myPane.YAxis.Scale.Max;
    myPane.XAxis.Scale.Min = myPane.YAxis.Scale.Min;
    myPane.XAxis.Scale.MajorStep = myPane.YAxis.Scale.MajorStep;
}

zg1.AxisChange();

第一次调用AxisChange时,控件会自动为我的数据计算正确的值。然后,我将相关参数从一个比例复制到另一个,然后应用更改。