2013-02-19 53 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