如何使用核心图和动态数据使图形居中

时间:2012-03-06 21:45:11

标签: ios core-plot

我有一个图表,可以根据播放器统计信息从我们的服务器动态更改数据。我遇到的问题是我无法根据收到的数据确定如何使图表居中。我以为我已正确配置它,但经过进一步测试,我们发现图表完全偏离中心。下面是我的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并检查收到的值是否大于上一条消息的最小值或最大值。如果是,那么我重新调整图表和图表。

非常感谢任何建议。

1 个答案:

答案 0 :(得分:0)

我明白了。我必须得到从我的最小值到最大值的总距离,然后找到它的中心。一旦我得到了它,我将y轴正交点设置为加到我的最小值的中心。