2012-06-16 56 views
0

我正在使用CorePlot框架繪製數據時遇到問題。我有integrated it,下面是我正在處理的項目中的代碼示例:實時分佈圖 圖表。問題:如果數據源具有相同的數據,則不繪圖圖形

如果我的數據源具有相同的值,則圖形不會繪圖。

這是繪製點代碼:

#pragma mark - CPTPlotDataSource methods 
-(NSUInteger)numberOfRecordsForPlot:(CPTPlot *)plot { 
    return [appDelegate.arrayLiveValues count]; 
} 

-(NSNumber *)numberForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum 
             recordIndex:(NSUInteger)index 
{ 
    NSInteger valueCount = [appDelegate.arrayLiveValues count]; 
    switch (fieldEnum) { 
     case CPTScatterPlotFieldX: 
      if (index < valueCount) { 
       return [NSNumber numberWithUnsignedInteger:index]; 
      } 
      break; 

     case CPTScatterPlotFieldY: 
      return [appDelegate.arrayLiveValues objectAtIndex:index]; 
      break; 
    } 
    return [NSDecimalNumber zero]; 
} 

如果appDelegate.arrayLiveValues數組包含重複的值,則它不會繪製。如果它具有不同的值,則根據datasource中的值繪製圖表,即appDelegate.arrayLiveValues圖表縮放級別正在設置。 我想知道什麼是內部功能

-(NSNumber *)numberForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)index method; 
+0

假設'arrayLiveValues'是一個數組數組,這看起來很好。你如何縮放情節空間? –

+0

如果數組包含與每個對象相同的數字,則不繪圖。通過遵循它的設置規模我認爲。 [plotSpace scaleToFitPlots:[NSArray arrayWithObjects:aaplPlot,nil]]; – Srinivas

+0

如果所有數據點完全相同,繪圖範圍將以零長度結束。在縮放範圍並根據需要調整範圍後,您需要檢查'xRange'和'yRange',以便在所有情況下都可以看到數據。 –

回答

0

是正是我們要根據我們的價值觀設定最低最高界限。

CGFloat xMin = 0.0f; 
    CGFloat xMax = 40.0f; //i need 40 plots 
    CGFloat yMin = 0.0f; 
    CGFloat yMax = 300.0f; // should determine dynamically based on max price 
    plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(xMin) length:CPTDecimalFromFloat(xMax)]; 
    plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(yMin) length:CPTDecimalFromFloat(yMax)]; 
相關問題