2012-10-25 68 views
0

情景:五个周期{3M,6M,1Y,2Y & 3Y}的五个图,每个图都有自己的(1-2)散点图;共享相同的y范围(值)。
每个期间都有不同的x范围和标签政策。
例如,可以有修补程序或位置策略;另一个没有。

X-范围似乎是不变的/plot-space。
所以我正在考虑用他们特定的xRanges &标签策略创建平行绘图空间。
我研究了情节空间与x.axis(多个)&图(或多个)的关系:在情节空间之间切换

格拉夫< === {的NSMutableArray * plotSpaces}
x.axis /积空间。
剧情/ plotspace

所以我相信我能:
1)创建plotspace。
2)将图空间分配给特定图,即x轴& xRange。
3)在图中添加或删除图。
4)重绘图。

所以当用户选择一个周期/重复空间时,我所需要做的就是:用周期图替换任何现有的图,这将导致图显示相应的x轴(Y轴常见)?

[myGraph removePlot:(CPTPlot *)oldPlot]; 
[myGraph addPlot:(CPTPlot *)plot toPlotSpace:(CPTPlotSpace *)space]; 

......我有点迷路了。

回答

0

轴也被分配到绘图空间。您也需要换出轴。通过添加和移除绘图和坐标轴,您将获得相对较高的性能。

正如您所观察到的,绘图范围是不可变的。这只意味着你不能改变现有的范围,并不是说你不能设置一个新的范围。创建一个新的CPTPlotRange对象或创建一个现有对象的可变副本。

无论何时您想更改绘图比例,您都需要执行以下操作。这些可以全部改变,无需删除和替换图表的主要部分。

  1. 如上所述更改绘图范围。
  2. 更新轴的标签策略和相关属性。
  3. 打电话-reloadData在图上加载新数据。
+0

我试图用一个新的来替换旧XRANGE: 'CPTPlotRange * myXRange = [[CPTPlotRange的alloc] initWithLocation:CPTDecimalFromDouble(0.0)长度:CPTDecimalFromUnsignedInteger(1)];plotSpace。xRange = myXRange; [myXRange release];' ...使用'1'来查看我是否有所作为。 但是,唉,我看到范围没有区别;即使在做图reloadData之后。 –

+0

这是默认范围。试试别的。 :-) –

+0

你可以请更具体吗?我想我可以使用非默认的xRange替换plotSpace的xRange,正如我试过的。也就是说,我创建了一个范围@位置和长度;然后将其分配给当前(实际)情节空间。我应该做什么不同? –