2015-10-16 2 views
0

У меня есть набор данных, который я рисую как CPTScatterPlot. Я также показываю серию строк, используя Core Graphics (CGContextStrokePath, ...). Я хотел бы связать набор линий и разброс, чтобы они масштабировались и качались вместе. Ниже приведена ссылка на эталонное изображение.Масштабирование сердечных дорожек штриховки с CPTScatterPlot

http://oi57.tinypic.com/2pq2bdx.jpg

Есть два возможных подхода к этому, что я могу думать:

  1. Создать CPTLayerAnnotation для набора строк и добавить к сюжету. Я сделал это, но не могу связать поведение взаимодействия.
  2. Сделайте каждую строку объектом CPTScatterPlot и постройте график на том же графике. Это будет работать, но, похоже, будет излишним с точки зрения количества созданных объектов.

Что вы предложите? Благодарю.

ответ

0

Вы можете использовать график разброса, чтобы нарисовать линии, но вам понадобится один для каждого цвета. Вы можете нарисовать несколько сегментов линии с одним участком разброса, разделив сегменты на значение данных [NSNull null] или nil.

Проще всего использовать штриховой график для рисования линий. Вы можете использовать методы источника данных -barLineStyleForBarPlot:recordIndex: и/или -barFillForBarPlot:recordIndex:, чтобы предоставить другой стиль линии и заполнить для каждого бара. Строка бара может использовать одно и то же сюжетное пространство, как график рассеяния, или вы можете создать второй и зеркально изменить одно пространство участка на другое с делегатом пространства. Используйте второе пространство сюжета, если вы хотите, чтобы расстояние между барами (контролируемое xRange участка участка) изменилось с помощью графика рассеяния, но не с базой или концом стержней.

+0

Спасибо Эрик! Я рад, что здесь можно использовать CPTBarPlot. Я создал класс для инкапсуляции объекта CPTBarPlot и двух NSMutableArrays для местоположения и правильности ответов. Я использовал методы источника данных для построения баров с прозрачными пограничными линиями. 'barFillForBarPlot: recordIndex' был записан для возврата требуемого (зеленого или красного) цвета в barFill в зависимости от значений массива правильности. Я использую одно и то же сюжетное пространство для разброса и полос на данный момент, так как я бы ограничивал вертикальное масштабирование и панорамирование все вместе. –

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