2015-11-16 2 views
0

Я использую ниже код, чтобы вычислить диапазон значений YAxis:IOS основного сюжета, как получить в ближайшее возможное значение минимального значения по оси Y

plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(yLow_NBH) 
               length:CPTDecimalFromFloat(yHigh_NBH - yLow_NBH)]; 
axisSet.yAxis.preferredNumberOfMajorTicks = 4.0; 
axisSet.yAxis.labelingPolicy = CPTAxisLabelingPolicyEqualDivisions; 

Я хочу график, чтобы начать Y оси с наилучшим ближайшим значения минимального значения Y. Например, если Ymin равно 5000, а интервалы между двумя значениями - 500, тогда yAxis должен начинаться с 4500,5000,5500 и так далее.

Заранее спасибо

мне нужен график в качестве второго изображения, если Ymin является 9000

enter image description here

+0

Опишите, что вы подразумеваете под "best". При заданных значениях 5000 кажется хорошим числом для запуска диапазона, если вам не нужно оставлять лишнее пространство на краях диапазона для таких вещей, как символы сюжета или метки данных. Есть ли еще какие-то другие факторы? –

+0

Наилучшее возможное значение означает, что любое значение для yMin Yaxis должно начинаться с ближайшего значения YMin на основе разницы интервалов. Предположим, у меня есть три значения 5000,6500,9000, так что YMin = 5000 и YMax = 9000. Так диапазон будет 5000-6000, 7000,8000,9000.And для индекса 0 значение YAxis будет 5000, которое может показаться, что ничего не построено (нет разбросанной линии будет видно), так как 5000 минимально. Я не хочу сохранять значение Ymin как «0», потому что для более высоких значений интервал также будет очень высоким. Я хочу, чтобы диапазон составлял 4000 500 000 и т. Д., Так что на графике можно отобразить значение 5000. –

+0

Эрик Я прикрепил изображения в своем главном сообщении, чтобы вы могли понять, что именно мое требование. –

ответ

0

Во-первых, я хотел бы придерживаться политики маркировки по умолчанию, CPTAxisLabelingPolicyFixedInterval. Вы можете выбрать majorIntervalLength, когда вы определяете предпочтительный диапазон участков, и убедитесь, что галочки будут падать с нужными значениями.

Посмотрите, как Core Plot определяет местоположения тиков с политикой маркировки CPTAxisLabelingPolicyAutomatic (см. this method). Вы можете использовать тот же алгоритм, чтобы найти лучший интервал тика, а затем настроить начальное местоположение и длину диапазона, чтобы упасть даже на кратные интервалы тика. Обратите внимание, что Core Plot делает всю математику с десятичными значениями, поэтому она остается точной с очень большими и очень маленькими значениями. Вы можете использовать значения double, чтобы упростить код, если вы знаете, что ваши данные всегда попадают в диапазон, который не будет вызывать числовые ошибки точности.

Смежные вопросы