2015-03-13 80 views
0

所以我一直在修改示例代碼,試圖讓圖形顯示0-20的y值,並且一次只顯示屏幕上最多6 x個值。 x的可見範圍爲0-6;CorePlot可見範圍不能按預期工作

這裏就是我拍攝的

enter image description here

的圖片,這是什麼樣子 enter image description here

因此,這裏是我認爲最重要的部分代碼。在這裏,我會告訴你我是如何做到的可見軸範圍,情節空間範圍和佔地空間範圍全球:

CPTMutablePlotRange *xRange = [plotSpace.xRange mutableCopy]; 
CPTMutablePlotRange *yRange = [plotSpace.yRange mutableCopy]; 

// I'm not sure what the difference is between the two 
// constrict this to 0-20 for y and 0-6 for x 
x.visibleRange = nil; 
y.visibleRange = nil; 
x.visibleAxisRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0.0f) length:CPTDecimalFromFloat(6.f)]; 
y.visibleAxisRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0.0f) length:CPTDecimalFromFloat(20.f)]; 

// expand the X, y axis to be more than we need 
[xRange expandRangeByFactor:CPTDecimalFromDouble(1.05)]; 
[yRange expandRangeByFactor:CPTDecimalFromDouble(1.05)]; 
plotSpace.xRange = xRange; 
plotSpace.yRange = yRange; 

// expand it to be even bigger 
[xRange expandRangeByFactor:CPTDecimalFromDouble(3.0)]; 
[yRange expandRangeByFactor:CPTDecimalFromDouble(3.0)]; 
plotSpace.globalXRange = xRange; 
plotSpace.globalYRange = yRange; 

所以在所顯示的應用程序的圖片,似乎顯示了我所有的值,而不是隻是六個,但它似乎知道,我只想顯示6,因爲標籤停在六。我想讓應用程序左右滾動以顯示其他點,然後顯示該線的適當長度,但一次只顯示一個。

這是代碼。這是相當sl,的,我只是在我清理它並將它帶入我的真實項目之前駭人地看看有什麼可能。所有的工作都是在controlChart.m文件中完成的,我用一些簡單的白色主題文件來解決,但這應該不重要。

coreplot-horrible-code

回答

0

由於X數據點相距一個單位,給予xRange 6的長度(加上一點的情節符號)會做你想要什麼。在您發佈的代碼中,在擴大範圍之前,xRange設置爲-scaleToFitPlots:。這使它適合所有的繪圖數據。

+0

你說得對。我認爲xRange是plotSpace的所有點的範圍,而不是可見範圍。我手動將範圍更改爲loc = 0,len = 6.1並且它工作。謝謝。現在滾動這個東西。 – Biclops 2015-03-13 19:31:52