我遇到的问题是使用两个Y轴(y1和y2),其中y1值为:(min,max)=(零,正)和y2值(min,max)=(负,在这种情况下,y1的零标记与y2轴的最大(负)值(通过x轴)一致,这是问题,因为我希望两个y轴的零点齐平在一起。
如果我知道两个y轴的最小值和最大值,那么这个问题可以很容易地解决,但我只知道范围是从正值还是负值开始,而不是值本身。
请注意,当两个y轴的值(数据点)都高于零时,此问题不存在。它们会自动对齐,使得它们的零点都通过x轴。
答案 0 :(得分: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;
}