我有两个数据集,它们都使用x轴上的日期范围。一个拥有整个日期范围的数据,而另一个拥有仅适用于该数据的数据 部分范围。 (它们左右使用独立的y轴,效果很好。)例如:
我希望与#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轴范围。
答案 0 :(得分:0)
好吧,我在numberForPlot的正确轨道上。我通过NOT调用scaleToFitPlots来解决问题#2。这引入了另一个问题,即尽管正确地设置了y范围,但是y轴范围远大于将绘图向下调整到底部的范围。