1

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

4

3 回答 3

1

完全清楚,这个 q。已经 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);
        };
于 2019-03-18T19:31:21.440 回答
0

Scale.IsAnyOrdinal 是否适用于任何 Axis.Scale 的?

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

于 2011-01-14T20:44:54.463 回答
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控件会自动为我的数据计算正确的值。然后我将相关参数从一个比例复制到另一个比例并应用更改。

于 2020-11-11T16:12:52.707 回答