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