很明显,我需要尝试修改CorePlot代码以允许我绘制Polar / Radar图,因为大量内存使用试图将圆/辐条绘制为ScatterPlots。
我意识到我可以继续使用CPTScatterPlot作为实际的极坐标数据,但不知怎的,我需要修改drawGridLinesInContext,这样每个位置不是直线,CPTXCoordinate会绘制圆形线,CPTYCoordinate会被忽略,而CPTZCoordinate会画出辐条。
我必须根据他们的XY兄弟创建新的类,即CPTPolarGraph,CPTPolarPlotSpace,CPTPolarAxisSet,CPTPolarAxis。新代码继续使用X和Y轴绘制这些轴,但是引入了Z轴来管理辐条。
现在我似乎已经破解了这个,但是如果我向上和向下滚动,圆圈继续通过X和Y轴刻度,就像他们应该做的那样,但是当我向左和向右滚动时,圆圈会重新绘制并且不再坐在虱子上。
我显然需要在这里做更多的调试,但是希望得到CorePlot工作人员的一些指示,关于可能发生的事情 。 我可以压缩我修改过的CorePlot_1.1版本,包括示例极坐标散点图,如果需要可以转发。
答案 0 :(得分:0)
这可能是像素对齐问题。刻度绘图代码将刻度线与像素网格对齐,但新轴绘图不对齐。查看CPTAlignRectToUserSpace()
以及 CPTUtilities.h 中的其他对齐函数。
编辑:
您还可能需要绘图空间中zRange
的自定义setter方法。使其与xRange
和yRange
设置者类似。这些方法触发的通知非常重要 - 它们会在绘图空间发生变化时强制重绘图形的其他部分。
答案 1 :(得分:0)
centreViewPoint的定位精确跟踪,因为辐条总是从同一点生成,无论中心位于plotArea中。环也始终从同一中心生成。
在我看来,不知何故,当我向左滚动时,环的直径从第一个绘图演示中改变,但是当我向上滚动时,它们没有。请注意,当绘图滚动到左边缘或右边缘时,主环将再次排列在主要刻度上,小调也是如此。
我试图反转代码,只有CPTCoordinateY被绘制,我看到相同的效果,除了向上滚动显示环直径大小的变化。
现在也许CGPoint startViewPoint = [thePlotSpace plotAreaViewPointForPlotPoint:startPlotPoint];
从x坐标确定环的直径,但是没有正确返回。虽然也许locations
集也在变化,但如果没有进行缩放,为什么还要这样做呢。
我在这里苦苦挣扎,因为当我浏览代码时,locations
似乎没有改变。