2012-02-01 106 views
3

我正在使用CorePlot for iPhone。我可以做一個簡單的圖表就好了。但我想要做的是讓y軸從0到100,x軸從1998年到2007年。我想保留這個數字(如果可能的話,不是基於自定義文本的標籤)。Coreplot iphone設置正確的座標軸和交叉點

的問題,就是當你設置這些軸:

// We modify the graph's plot space to setup the axis' min/max values. 
float xAxisMin = 1998 
float xAxisMax = 2007; 
float yAxisMin = 0; 
float yAxisMax = 100; 
CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)graph.defaultPlotSpace; 
plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(xAxisMin) length:CPTDecimalFromFloat(xAxisMax - xAxisMin)]; 
plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(yAxisMin) length:CPTDecimalFromFloat(yAxisMax - yAxisMin)]; 

// Modify the graph's axis with a label, line style, etc. 
CPTXYAxisSet *axisSet = (CPTXYAxisSet *)graph.axisSet; 

axisSet.xAxis.title = @""; 
axisSet.xAxis.titleTextStyle = textStyle; 
axisSet.xAxis.titleOffset = 10.0f; 
axisSet.xAxis.axisLineStyle = lineStyle; 
axisSet.xAxis.majorTickLineStyle = lineStyle; 
axisSet.xAxis.minorTickLineStyle = lineStyle; 
axisSet.xAxis.labelTextStyle = textStyle; 
axisSet.xAxis.majorIntervalLength = CPTDecimalFromFloat(1000.0f); 
axisSet.xAxis.labelOffset = 1.0f; 
axisSet.xAxis.minorTicksPerInterval = 1; 
axisSet.xAxis.minorTickLength = 5.0f; 
axisSet.xAxis.majorTickLength = 7.0f; 

你得到,顯示在0 y軸將100則x軸開始於1998年左右在右邊的圖表。即它們的圖形不會在X:1998 y:0處交叉。是否有辦法強制它這樣做?據我所知,我必須做一個x-axix範圍爲0-2007,y軸範圍爲0-100的圖表。那我可以告訴它切出0-1997的棋子,並且讓棋子在0?

另一種方法是使用自定義點。我試過的。但似乎有一個問題,它不會在圖表上顯示刻度線。例如,如果我從源代碼中看到這個例子,我可以看到1998,1999,2000等,但是沒有|線與X軸交叉。這就像蜱線不會畫,因爲我使用自定義線。

感謝您的任何和所有幫助,

-David

+0

我知道這個鏈接:http://stackoverflow.com/questions/2054727/爲什麼不會我的x軸顯示核心劇情在iphone上 我只需要將它在X(向左)方向而不是Y. – 2012-02-02 01:01:16

+0

如果我只是這樣做:axisSet.yAxis.axisConstraints = [CPTConstraints constraintWithLowerO ffset:150];然後它將yAxis移動到右邊,但是場景然後到達屏幕的右側,並且大部分看不見..不是真正的解決方案.. – 2012-02-02 01:30:52

回答

1

使用orthogonalCoordinateDecimal屬性:

axisSet.xAxis.orthogonalCoordinateDecimal = CPTDecimalFromFloat(yAxisMin); 
axisSet.yAxis.orthogonalCoordinateDecimal = CPTDecimalFromFloat(xAxisMin); 
+0

這是正確的答案,但是我需要的部分我昨晚想到了。如果你只是使用其中的一個(僅限於y),視圖將不會移動以使它們排列起來。你必須用上面的語句將xAxis設置爲一個位置(在我的情況下爲0)。這將鎖定視圖。然後把上面的yAxis語句放入左邊的。這會將它們一起移動。如果你不使用它們,它們會聚集在一起,但視圖不會轉移到可見區域。 – 2012-02-02 19:39:35