Coreplot iphone设置正确的轴和交叉点

时间:2012-02-01 21:00:43

标签: iphone core-plot

我正在为iPhone使用CorePlot。我可以做一个简单的图表就好了。但我要做的是让y轴从0到100,x轴从1998年到2007年。如果可能的话,我想保留这个数字(不是基于自定义文本的标签)。 / p>

问题在于,当您设置这些轴时:

// 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;

你得到一个图表,显示y轴为0到100然后x轴从大约1998开始向右。即他们的图表不会在X:1998 y:0交叉。有没有办法强迫它这样做?据我所知,我必须做一个x-axix范围为0-2007且y轴范围为0-100的图表。然后我可以告诉它切出0-1997件并移动以使该件位于0?

另一种方法是使用自定义点。我试过了。但似乎存在一个问题,它不会在图形线上显示刻度线。例如,如果我从源代码中跟随示例,我可以看到1998年,1999年,2000年等,但没有|线穿过x轴。这就像刻度线不会绘制,因为我使用自定义线。

感谢您的帮助,

-David

1 个答案:

答案 0 :(得分:1)

使用orthogonalCoordinateDecimal属性:

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