2011-01-13 2 views
2

Проблема заключается в использовании двух Y-осей (y1 и y2), где значение y1 равно: (min, max) = (ноль, положительный) и y2 значение (min, max) = (отрицательное, положительное), в этом случае нулевая отметка y1 совпадает с максимальным (отрицательным) значением оси y2 (через ось x), то есть проблема, так как я хочу, чтобы нуль точка обеих осей y, чтобы смыть вместе.ZedGraph v. 5.15, выравнивание по оси Y

Если бы я знал значение min и max для обеих осей y, то эту проблему можно было бы легко устранить, но я знаю только, начинается ли диапазон от положительного или отрицательного значения, а не от самого значения.

Обратите внимание, что этой проблемы нет, когда обе оси y имеют значения (точки данных) выше нуля. Они автоматически выравниваются так, что обе их нулевые точки проходят через ось х.

ответ

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; 
} 
Смежные вопросы