Coreplot iphone устанавливает правильную ось и точку пересечения - PullRequest
3 голосов
/ 02 февраля 2012

Я использую CorePlot для iPhone. Я могу сделать простой график просто отлично. Но я хочу сделать так, чтобы ось Y шла от 0 до 100, а ось X - с 1998 по 2007 год. Я хотел бы сохранить эту цифру (не надписи на основе текста), если возможно. 1001 *

Проблема в том, что при настройке этой оси:

// 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, после чего ось начинается примерно в 1998 году справа. то есть они не пересекаются в X: 1998 y: 0. Есть ли способ заставить это сделать это? Насколько я могу судить, я должен сделать график с диапазоном осей X от 0-2007 и диапазоном осей Y 0-100. Тогда я могу сказать ему вырезать кусок 0-1997 и сдвинуть его так, чтобы кусок был на 0?

Альтернатива заключается в использовании пользовательских очков. Который я пробовал. Но, похоже, есть проблема, когда на графике не отображаются галочки. Например, если я последую примеру из источника, я могу увидеть 1998, 1999, 2000 и т. Д., Но нет | линии пересекают ось X. Как будто линии галочек не будут рисоваться, потому что я использую пользовательские линии.

Спасибо за любую помощь,

1012 * -Давид *

1 Ответ

1 голос
/ 02 февраля 2012

Используйте свойство orthogonalCoordinateDecimal:

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