Изменить стиль линии CPScatterPlot для разных точек

Я использую coreplot на ios и имею диаграмму рассеяния. Можно ли изменить стиль линии в зависимости от наносимой точки? Я только нашел, как установить его для всего сюжета.


person lps    schedule 25.06.2011    source источник


Ответы (1)


да. Убедитесь, что ваш делегат графа соответствует CPScatterPlotDelegate, внедрив -symbolForScatterPlot:recordIndex:. Вот рабочая реализация, которая возвращает другой символ для индекса, который соответствует _selectedIndex:

- (CPPlotSymbol *)symbolForScatterPlot:(CPScatterPlot *)plot recordIndex:(NSUInteger)index
{   
    CPMutableLineStyle *symbolLineStyle = [CPMutableLineStyle lineStyle];
    symbolLineStyle.lineColor = [CPColor blackColor];
    CPPlotSymbol *plotSymbol = [CPPlotSymbol ellipsePlotSymbol];
    plotSymbol.lineStyle = symbolLineStyle;

    if (_selectedIndex != NSNotFound && index == _selectedIndex) 
    {
        plotSymbol.symbolType = CPPlotSymbolTypeDiamond;
        plotSymbol.size = CGSizeMake(12, 12);
        plotSymbol.fill = [CPFill fillWithColor:[CPColor redColor]];
    }
    else
    {
        plotSymbol.symbolType = CPPlotSymbolTypeEllipse 
        plotSymbol.size = CGSizeMake(8, 8);
        plotSymbol.fill = [CPFill fillWithColor:[CPColor greenColor]];  
    }
    return plotSymbol;
}
person RyanR    schedule 25.06.2011
comment
Это хороший ответ, однако я думаю, что это не то, о чем он просил. Я предполагаю, что идея состоит в том, как сделать обычный линейный график, например, пунктирным. Ваше предложение показывает, как изменить символы графика в зависимости от текущего индекса. Я был бы рад, если бы вы могли объяснить, как изменить стиль линии в середине графика. Спасибо - person Petar; 02.05.2012
comment
На всякий случай, если кто-то хочет использовать symbolForScatterPlot, он должен использовать делегат CPTScatterPlotDataSource. - person alecnash; 05.12.2012