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