如何使用核心图

时间:2016-12-21 06:59:05

标签: ios swift graph core-plot

我正在使用核心图来绘制图形。我的问题是我想根据线条颜色设置图例文字颜色。我在一个图中有四个散点图,每个散点图都有不同的线条颜色。

在图例中,它会正确显示线条颜色,但我想根据每个散点图标题的线条颜色更改文本颜色。我已为该图例编写了以下代码。

newGraph.legend = CPTLegend(graph: newGraph)
        newGraph.legend?.numberOfRows = UInt(2.0)
        let dataSourceLabelStyle = CPTMutableTextStyle()
        dataSourceLabelStyle.color = CPTColor.white()
        newGraph.legend?.textStyle       = dataSourceLabelStyle
        newGraph.legend?.fill = CPTFill(color: CPTColor.init(componentRed: 50/244, green: 43/244, blue: 87/244, alpha: 1.0))
        newGraph.legend?.cornerRadius = 5.0
        newGraph.legendDisplacement = CGPoint.init(x: -50, y: 210)
        let fadeInAnimation = CABasicAnimation(keyPath: "opacity")
        fadeInAnimation.duration            = 1.0
        fadeInAnimation.isRemovedOnCompletion = false
        fadeInAnimation.fillMode            = kCAFillModeForwards
        fadeInAnimation.toValue             = 1.0
        dataSourceLinePlot.add(fadeInAnimation, forKey: "animateOpacity")
        self.scatterGraph = newGraph

从上面的代码可以看出,传说只能采用一种风格,即newGraph.legend?.textStyle = dataSourceLabelStyle,所以传说中的所有文字都是白色的。

我想根据线条颜色更改图例文字颜色。

任何人都能帮助我。

2 个答案:

答案 0 :(得分:0)

对于包括散点图在内的大多数绘图类型,请将attributedTitle设置为具有所需颜色属性的NSAttributedString。饼图和条形图具有数据源方法,可为每个数据索引提供属性图例标题。

答案 1 :(得分:0)

不要认为可能因为您为图表设置图例而图表包含所有图表。以下是我在ObjC中使用它的方法:

CPTScatterPlot *aPlot = [[CPTScatterPlot alloc] init];
    aPlot.dataSource = self;
    aPlot.identifier = stringPlotId;
    [graph addPlot:aPlot toPlotSpace:plotSpace];   
 aPlot.title=stringPlotTitle;//will show in legends

 //add more plots if needed then format labels text once for all plots

graph.legend= [CPTLegend legendWithGraph:graph];
CPTMutableTextStyle *mySmallerTextStyle = [[CPTMutableTextStyle alloc] init];
[mySmallerTextStyle setFontSize:8];
mySmallerTextStyle.color=[CPTColor whiteColor];
[graph.legend setTextStyle:(CPTTextStyle *)mySmallerTextStyle];