核心图散点图文本和符号对齐

时间:2016-07-24 17:57:17

标签: macos core-plot scatter-plot

核心情节新手;我有3个散点图问题:

使用图库样本散点图,我将其破解为添加几个图,无线,每个都有一个符号 - 16x16圈我按颜色选择绘图。我想在这个符号上面放一个2个字符的文本标签(我在这里偷走了其他地方):

- (nullable CPTPlotSymbol *)symbolForScatterPlot:(nonnull CPTScatterPlot *)plot recordIndex:(NSUInteger)index
{
    CPTPlotSymbol * symbol = nil;

    symbol = [CPTPlotSymbol ellipsePlotSymbol];
    symbol.fill = [CPTFill fillWithImage:cptSymbols[index % BET_MAXIMUM]];
    symbol.size = CGSizeMake(16,16);

    return symbol;
}

- (CPTLayer *)dataLabelForPlot:(CPTPlot *)plot recordIndex:(NSUInteger)index
{
    NSString * symbolName = [cptSymbols[index % BET_MAXIMUM] substringToIndex:2];
    CPTTextLayer * label = [[CPTTextLayer alloc] initWithText:symbolName];
    CPTMutableTextStyle * textStyle = [label.textStyle mutableCopy];

    plot.labelOffset = 0;
    textStyle.color = cptColors[Random(cptColors.count)];
    label.textStyle = textStyle;
    [textStyle release];
    return [label autorelease];
}

但文本分层我需要将它放在符号的中心;选择其颜色以与符号颜色形成对比。在它的最终形式中,标签将由符号数组cptSymbols []和颜色cptColors []驱动,这些数据构成了数据捕获选择的基础。

我可以影响哪些CPTTextLayer或CPTPlotSymbol属性做标签相对于其数据符号的定位?

动画开始滚动后,最新的散点不再有标签!?该示例通过计时器生成单个值,这符合我的需求 - 计时器,但每次捕获我可以有几个点。

动画开始后,如何将文本标签保持为符号?

最后,在移动,滚动,捏合/缩放时,显示屏显示有点锯齿状。

可以调整它以保持原始的平滑滚动吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

使用图表的labelOffset来控制标签和数据点之间的间距。

应该为每个新数据点调用-dataLabelForPlot:recordIndex:方法,就像绘图要求新数据一样。我们需要查看您的图表设置和数据源代码,以帮助进一步排除故障。

绘图性能取决于许多因素:您使用的硬件,数据点的数量,要绘制的不同元素的数量等。要查看的常见事项是将所有未使用的填充和线条样式设置为{ {1}}因此Core Plot可以跳过绘制这些元素,使用纯色而不是渐变或图像填充,最大限度地减少透明度的使用。此外,最小化网格线和轴标签的数量,以减少每个动画帧需要移动和/或重绘的元素数量。