2013-02-19 70 views
0

我无法得到我的图形与所有情节点,以适应我的看法。核心阴谋没有缩小

enter image description here 上面的屏幕截图中显示的坐标是:x=1, y=10 and x=2, y=0

这是我的UIViewControllerGraphingViewController) 的屏幕截图我有一个单独的视图嵌套在这里,这是该图的主机视图。我对图形代码是完全一样SimpleScatterPlot.m与我定制了生成数据的方法除外:

-(void)generateData 
{ 
    NSMutableArray *contentArray = [NSMutableArray array]; 
    int counter = 0; 
    for (NSNumber * entryValue in self.plotDataArray) { 
     counter++; 
     id x = [NSDecimalNumber numberWithInt:counter]; 
     id y = [NSDecimalNumber numberWithInt:[entryValue intValue]]; 
     [contentArray addObject:[NSMutableDictionary dictionaryWithObjectsAndKeys:x, @"x", y, @"y", nil]]; 
     NSLog(@"setting values for graph x: %@ and y: %@",x,y); 
    } 
    plotData = [contentArray retain]; 
} 

另一件事,奇怪的是,我可以左右滚动,但没有向上或向下。我在之前的变化中,x,​​y从0,0开始,但隐藏了x轴,所以虽然它是我想要的,但我不能隐藏该行。

如何在0,0上启动图形,并且能够将其缩放到不仅可以查看所有点,还可以查看标签(“X Axis”,“Y Axis”)?你也可以看到Y轴正在经过.2和X经过.5。这些应该是1,因为我所有的号码都是整数。

回答

1

最简单的方法来保持轴标签可见是设置titleLocation。缺省值NAN将标签放置在绘图区域的中心。

globalYRange正在阻止垂直滚动。默认值nil不限制滚动。如果您想要限制滚动,但需要更改绘图范围以显示新数据,请将全局范围设置为nil,更新绘图范围并重置全局范围。

勾号位置和轴标签由轴标签策略控制。默认的固定间隔策略将起作用,只需将majorIntervalLength保留默认值一(1)。

0

你试过scaleToFitPlots方法吗?

[plotSpace scaleToFitPlots:[NSArray arrayWithObjects:scatterPlot, nil]]; 
+0

ya。如果您查看[链接]中的代码(http://code.google.com/p/core-plot/source/browse/examples/CorePlotGallery/src/plots/SimpleScatterPlot.m),您会看到在线135.(我不认为它很重要,但他们使用[NSArray arrayWithObjects:dataSourceLinePlot,无]) – 2013-02-19 18:38:39

0

我修复了这个问题的一个部分,这个问题是没有显示的高点。这行代码是限制最大Y Axis

CPTPlotRange *globalYRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0.0f) 
                  length:CPTDecimalFromFloat(2.0f)]; 

所以我创建了一个属性来跟踪最大的价值,这个设置为:

CPTPlotRange *globalYRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0.0f) 
                  length:CPTDecimalFromFloat(self.largestYvalue)]; 

所以现在我有这样的:

enter image description here

我仍然需要弄清楚如何获得X Axis标签来显示(如果我想出来或仍然接受为此)。

1

我实施它的方式是一样的。我跟踪数据中的最小和最大X和Y值,然后相应地设置绘图范围。

// Adjust the plot space according to the min and max x/y values 
plotSpace.xRange = [[CPTPlotRange alloc] initWithLocation:CPTDecimalFromInt([self.minTime intValue]) length:CPTDecimalFromInt ([self.maxTime intValue] - [self.minTime intValue])]; 
plotSpace.yRange = [[CPTPlotRange alloc] initWithLocation:CPTDecimalFromInt([self.minScore intValue]) length:CPTDecimalFromInt (([self.maxScore intValue] - [self.minScore intValue]))]; 
+0

这有助于但Erics上面的答案似乎工作最好。谢谢你 – 2013-02-21 01:17:31