2011-01-13 81 views
2

我遇到的问题是当使用两个Y轴(y1和y2),其中y1值为:(min,max)=(零,正值)和y2值(最小,最大)=(负,正),在这种情况下,y1的零标记与y2轴的最大(负)值一致(通过x轴),这是问题,因为我想要零两个y轴的点一起齐平。ZedGraph v。5.15,多轴对齐

如果我知道两个y轴的最小值和最大值,那么这个问题可以很容易地解决,但我只知道范围是从正值还是负值开始,而不是从值本身开始。

请注意,当两个y轴的值(数据点)都大于零时,此问题不存在。它们自动对齐,使得它们的零点都穿过x轴。

回答

0

我设法做到通过固定轴之间的比例:

public void SetY1Y2CommonZero() 
{ 
    AxisChange(); 

    ZedGraph.Scale source, dest; 

    if (GraphPane.YAxis.Scale.Min != 0) 
    { 
     source = GraphPane.YAxis.Scale; 
     dest = GraphPane.Y2Axis.Scale; 
    } 
    else if (GraphPane.Y2Axis.Scale.Min != 0) 
    { 
     source = GraphPane.Y2Axis.Scale; 
     dest = GraphPane.YAxis.Scale; 
    } 
    else 
    { 
     return; 
     // do nothing - both axis have 0 on min... 
    } 


    double proportion = source.Max/source.Min; 

    // we want to ENLARGE the other axis accordingly: 
    if (proportion * dest.Min > dest.Max) 
     dest.Max = proportion * dest.Min; 
    else 
     dest.Min = dest.Max/proportion; 
}