1

很明显,我需要尝试修改 CorePlot 代码以允许我绘制 Polar/Radar 图,因为试图将圆/辐条绘制为 ScatterPlot 时内存使用量很大。

我意识到我可以继续对实际的极坐标数据使用 CPTScatterPlot,但是不知何故我需要修改 drawGridLinesInContext,这样,CPTXCoordinate 将绘制圆形线,而不是在每个位置绘制直线,CPTYCoordinate 将被忽略,而 CPTZCoordinate 将绘制辐条。

我必须基于它们的 XY 兄弟创建新类,即 CPTPolarGraph、CPTPolarPlotSpace、CPTPolarAxisSet、CPTPolarAxis。新代码继续使用 X 和 Y 轴来绘制这些轴,但是引入了 Z 轴来管理辐条。

现在我似乎已经破解了这个,但是如果我向上和向下滚动,圆圈会继续通过 X 和 Y 轴刻度,就像它们应该做的那样,但是当我左右滚动时,圆圈会被重新绘制并且不再坐在蜱虫上。

我显然需要在这里进行更多调试,但希望 CorePlot 工作人员提供一些关于可能发生的事情的指示。我可以压缩我修改过的 CorePlot_1.1 版本,包括一个示例极坐标散点图,如果需要,可以转发。

4

2 回答 2

0

这可能是像素对齐问题。刻度绘图代码将刻度标记与像素网格对齐,但新的轴绘图没有。查看CPTUtilities.hCPTAlignRectToUserSpace()中的其他对齐功能。

编辑:您可能还需要zRange在绘图空间中使用自定义设置器方法。使其类似于xRangeyRange设置器。这些方法发出的通知很重要——当绘图空间发生变化时,它们会强制图形的其他部分重新绘制。

于 2013-02-18T23:24:28.500 回答
0

centerViewPoint 的定位精确跟踪,因为辐条总是从同一点生成,无论中心在 plotArea 中的何处。环也总是从同一个中心生成。在我看来,不知何故,当我左右滚动时,环的直径从第一个绘图演示中发生了变化,但是当我向上滚动时,它们没有。请注意,当绘图滚动到左边缘或右边缘时,主要环再次排列在主要刻度上,次要刻度也是如此。我尝试反转代码,以便仅绘制 CPTCoordinateY,我看到相同的效果,除了向上滚动显示环直径大小的变化。现在CGPoint startViewPoint = [thePlotSpace plotAreaViewPointForPlotPoint:startPlotPoint];,从 x 坐标确定环的直径的方法可能没有正确返回。虽然也许也是locations设置正在改变,但如果没有进行缩放,为什么要这样做。我在这里有点挣扎,因为当我浏览代码时locations似乎没有改变。

于 2013-02-19T03:30:31.747 回答