2个具有不同y轴但具有相同x轴但具有不同范围的核心图

时间:2015-05-12 07:01:04

标签: core-plot

我有两个数据集,它们都使用x轴上的日期范围。一个拥有整个日期范围的数据,而另一个拥有仅适用于该数据的数据 部分范围。 (它们左右使用独立的y轴,效果很好。)例如:

  1. 2015年1月1日至2015年5月1日期间发生的131个数据点
  2. 2015年4月15日至2015年5月1日期间发生的10个数据点
  3. 我希望与#2叠加的图仅在较高的日期范围内绘制。

    我目前为x轴创建数据标签,我自己根据#1中的131个数据点设置标签。

    由于#2只有10个数据点,我需要将它映射到x轴上与其日期对应的131个位置中的10个位置。我在numberForPlot中通过使用一个数组来完成此操作,该数组包含#2的10个数据点与#1设置的正确x轴位置之间的映射。

        if ([(NSString *)plot.identifier isEqualToString:@"Pounds"]) {
        switch (fieldEnum) {
            case CPTScatterPlotFieldX:
                return [NSNumber numberWithUnsignedInteger:self.xAxisMapping[index]];
                break;
    
            case CPTScatterPlotFieldY:
            {
                PlotData *pd = (PlotData *)self.plotIDToPlotData[plot.identifier];
                if (pd != nil) {
                    NSLog(@"CPTScatterPlotFieldY. index: %lu  returning: %f\n", (unsigned long)index, [pd yValue:index]);
                    return([NSNumber numberWithDouble:[pd yValue:index]]);
                }
            }
            default:
                break;
        }
    

    几乎没有关于CPTScatterPlotFieldX枚举的文档,但我的假设是我应该根据数据点的数量获取索引参数并返回x轴中的实际位置。这正是我所需要的,似乎是一种逻辑设计。

    问题是,它不起作用; #2的图仍然会扩展以适应整个x轴范围。

    有人可以帮忙吗?这必须是一个常见问题,其中2个图共享x轴但没有相同数量的数据点或仅部分覆盖定义的x轴范围。

1 个答案:

答案 0 :(得分:0)

好吧,我在numberForPlot的正确轨道上。我通过NOT调用scaleToFitPlots来解决问题#2。这引入了另一个问题,即尽管正确地设置了y范围,但是y轴范围远大于将绘图向下调整到底部的范围。