Как добавить смещение между двумя точечными графами, используя coreplot - PullRequest
1 голос
/ 13 февраля 2012

Я добавил две гистограммы с barOffset, чтобы обе гистограммы отображались рядом.

Я также хочу добавить два графика рассеяния, используя одни и те же данные, чтобы каждый график рассеяния касался кончика каждого столбчатого графика соответственно.

Вот как я добавил два графика рассеяния.

//Add line graph 1
    CPTScatterPlot *dataSourceLinePlot = [[[CPTScatterPlot alloc] init] autorelease];
    dataSourceLinePlot.identifier = @"Scatter-Plot-1";

    CPTMutableLineStyle *lineStyle = [[dataSourceLinePlot.dataLineStyle mutableCopy] autorelease];
    lineStyle.miterLimit = 1.0f;
    lineStyle.lineWidth = 3.0f;
    lineStyle.lineColor = [CPTColor orangeColor];
    dataSourceLinePlot.dataLineStyle = lineStyle;

    dataSourceLinePlot.dataSource = self;
    [graph addPlot:dataSourceLinePlot toPlotSpace:barPlotSpace];

    //Add line graph 2
    CPTScatterPlot *dataSourceLinePlot2 = [[[CPTScatterPlot alloc] init] autorelease];
    dataSourceLinePlot2.identifier = @"Scatter-Plot-2";

    CPTMutableLineStyle *lineStyle2 = [[dataSourceLinePlot.dataLineStyle mutableCopy] autorelease];
    lineStyle2.miterLimit = 1.0f;
    lineStyle2.lineWidth = 3.0f;
    lineStyle2.lineColor = [CPTColor greenColor];

    dataSourceLinePlot2.dataLineStyle = lineStyle2;
    dataSourceLinePlot2.dataSource = self;
    [graph addPlot:dataSourceLinePlot2 toPlotSpace:barPlotSpace];

Но теперь оба точечных графика начинаются с самого первого наконечника гистограммы, когда значение данных совпадает

Я хочу, чтобы каждый из них касался только наконечника гистограммы.

Как я могу это сделать? Есть ли что-то barOffset что-то такое, что скаттер может его переместить?

Я правильно реализовал делегатов, и данные тоже отображаются правильно

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Вы также можете отрегулировать смещение plotSpace, например, чтобы начать с 0,4 - barPlotSpace.xRange = CPTPlotRange (location: 0.5, length: NSNumber (value: end)), но в этом случае весь ваш график смещается.

Или лучше как предложено выше: в источнике данных 'номер'

public func number(for plot: CPTPlot, field: UInt, record: UInt) -> Any?
{
    let idt = plot.identifier as! NSString;

    switch CPTBarPlotField(rawValue: Int(field))! {
    case .barLocation:
        if idt.compare("Scatter-Plot-1") == .orderedSame {
            // This will shift the Scatter-Plot-1 to the left
            return NSNumber(value: Double(record) + 0.5)
        } else {
            return record as NSNumber
        }
    case .barTip:
        //Enter your code
        return nil

    default:
        return nil
    }
}
0 голосов
/ 14 февраля 2012

Если barWidthsAreInViewCoordinates - НЕТ (по умолчанию), вы можете просто добавить или вычесть barOffset из координаты x или y в источнике данных.

...