我可以使用以下代码在所有绘图中成功缩放x:
zg1.IsEnableHZoom = true;
zg1.IsEnableVZoom = false;
zg1.IsSynchronizeXAxes = true;
foreach (GraphPane gp in zg1.MasterPane.paneList)
{
> //What code can I put here?
}
我的问题是使用此代码时,Y轴将根据数据的原始视图保持最大值和最小值。我希望Y轴自动缩放,以便最大和最小值仅基于由于x轴缩放而可见的数据(当然,每个图形窗格)。是否有一些命令或暴力方法,我可以在上面显示的for循环中的每个图形窗格上使用?提前感谢任何人的帮助。
答案 0 :(得分:1)
你可以在循环中使用它(假设X轴刻度MinAuto和MaxAuto为假)
foreach (GraphPane gp in zg1.MasterPane.paneList)
{
gp.YAxis.Scale.MinAuto = true;
gp.YAxis.Scale.MaxAuto = true;
// This will force ZedGraph to calculate the Min and the Max of the Y axis
// based on the X axis visible range
gp.IsBoundedRanges = true;
}
zg1.MasterPane.AxisChange();
答案 1 :(得分:0)
之前我遇到过同样的问题,除了检查所有曲线点之外找不到其他方法。
我在Paint事件中添加了一个事件处理程序来执行此操作,我确信有一些方法可以优化。
这样的事情:
private void graph_Paint(object sender, PaintEventArgs e)
{
double min = Double.MaxValue;
double max = Double.MinValue;
CurveItem curve = graph.GraphPane.CurveList[0];
for (int i = 0; i < curve.Points.Count; i++)
{
if (curve.Points[i].X > graph.GraphPane.XAxis.Scale.Min &&
curve.Points[i].X < graph.GraphPane.XAxis.Scale.Max)
{
min = Math.Min(curve.Points[i].Y, min);
max = Math.Max(curve.Points[i].Y, max);
}
}
if (min != Double.MaxValue)
{
graph.GraphPane.XAxis.Scale.Min = min;
graph.GraphPane.XAxis.Scale.Max = max;
}
}