【问题标题】:core plot scatter plot text and symbol alignment核心图散点图文本和符号对齐
【发布时间】:2016-07-24 17:57:16
【问题描述】:

新的核心情节;我有 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 属性?

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

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

最后,当移动、滚动、捏合/缩放时,显示屏会出现锯齿状。

可以调整这个以保持原来的平滑滚动吗?

谢谢!

【问题讨论】:

    标签: macos core-plot scatter-plot


    【解决方案1】:

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

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

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

    【讨论】:

    • 我添加了符号委托;图形数据源是相同的(newData)。我不明白 labelOffset 是什么 - 单个值;我认为这是一个垂直偏移 - 水平上没关系。我正在尝试纠正垂直偏移。但是,一旦图形滚动,符号标签就不再出现新数据,所以最终我看到的只是符号(小圆圈 16x16)。无论如何,将相关文件和屏幕截图发布到drive.google.com/…
    • 哦,我正在使用集成显卡的 2015 15" mbPro 16/512 ssd 进行此操作
    • 对于散点图,labelOffset 是绘图点中心与标签最近边缘之间的垂直距离。正偏移在上面,负偏移在下面。
    • 缺少标签是标签代码中的错误。请在 Core Plot 上报告issue tracker
    • 谢谢我提交它引用了显示此内容的模块,但是一旦您为符号添加标签,您也可以在示例中看到它。至于动画锯齿,我将不得不多玩一点,这样我才能更好地表达这个问题。
    猜你喜欢
    • 1970-01-01
    • 2013-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-21
    • 1970-01-01
    相关资源
    最近更新 更多