2

我遇到的问题是使用两个 Y 轴(y1 和 y2)时,其中 y1 值是:(min,max)=(零,正)和 y2 值(min,max)=(负,正),在这种情况下,y1 的零标记与 y2 轴(通过 x 轴)的最大(负)值重合,这就是问题所在,因为我希望两个 y 轴的零点齐平。

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

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

4

1 回答 1

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;
}
于 2017-04-04T04:16:33.370 回答