как центрировать график, используя основной график и динамические данные - PullRequest
0 голосов
/ 07 марта 2012

У меня есть график, который продолжает получать динамически изменяющиеся данные с нашего сервера на основе статистики игрока. Проблема, с которой я сталкиваюсь, заключается в том, что у меня возникают проблемы с выяснением того, как центрировать график на основе полученных данных. Я думал, что настроил его правильно, но после дальнейшего тестирования мы обнаружили, что график полностью смещен от центра. Ниже приведен фрагмент кода, расположенный в моих данных reloadData.

- (void)reloadData
{
    CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)Chart.defaultPlotSpace;
    if (maxY < valueMaxY || minY > valueMinY)
    {
        // Reload the plot graph
        maxY = valueMaxY + (valueMaxY / 2);

        // Properly align the Y-Axis
        int tickCount = maxY / 5;

        if(tickCount <= 1)
        {
            tickCount = 1;
        }

        plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromInt(tickCount * -1) length:CPTDecimalFromInt(maxY - (tickCount * -1))];

        CPTXYAxisSet *axisSet = (CPTXYAxisSet *)Chart.axisSet;
        CPTXYAxis *y = axisSet.yAxis;
        y.majorIntervalLength = CPTDecimalFromInt(tickCount);
        y.minorTicksPerInterval = 1;
        NSArray *exclusionRanges = [NSArray arrayWithObjects:
                       [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(-2.0) length:CPTDecimalFromFloat(2.0)],
                       nil];
        y.labelExclusionRanges = exclusionRanges;
    }

    [Chart reloadData];
}

Краткое описание состоит в том, что я хотел бы, чтобы диаграмма центрировалась в соответствии с представлением, которое ее поддерживает. Если возможно, я бы хотел, чтобы на оси Y и X было видно не более 5 тиков. То, что я пытаюсь сделать, из приведенного выше фрагмента - это только ось Y, - это получить данные с сервера и проверить, больше ли значение, чем предыдущее. Затем я вызываю reloadData и проверяю, больше ли полученные значения, чем значения min или max из предыдущего сообщения. Если либо, то я перенастраиваю график и графики.

Любой совет будет принят с благодарностью.

1 Ответ

0 голосов
/ 12 марта 2012

Я понял это. Я должен был получить общее расстояние от моего минимального до максимального значения, а затем найти его центр. Как только я получил это, я установил ортогональную точку оси Y, чтобы центр был добавлен к моему минимальному значению.

...