我已经很好地了解了这个问题的答案,并在我的代码中尝试了几种解决方案,到目前为止还没有找到。
我有一个我正在绘制的线图,一个CPTScatterPlot
图表,我有正确添加点数。我想将这些点中的每一个显示为直径约为3-5个像素的点,并通过约3个像素宽的线连接。一切正常。
问题在于,当绘图是图形托管视图的一个边缘的直线时,线条和点被剪裁,看起来根本不正确。
这是它应该是什么样子的样机:
这就是我现在大部分时间都看到的效果:
我为小图片道歉,但希望你能看到在第二个图像中,线条和点只在图表视图中呈现几个像素,而不是完全在视图中。在第二个数据中,前75%的数据实际上在y = 1,然后下降到y = 0.
如何将图形组件的绘制按几个像素插入以防止剪裁任何形状?
到目前为止:
我已尝试在图表上设置填充,但仅此而已 合同它所吸引的区域,我想为标题腾出空间 我没有使用。
我也尝试添加我的最小/最大x / y范围设置 根据我在后台更新的数据重新计算。这个 工作,但显然只有我添加到这些值的金额是 相对于将用于绘图比例的绘图比例是正确的 我输入的数据值。
我在Mac OS上使用NSView(实际上是CPTGraphHostingView),因此clipsToBounds
不可用。另外,我在CPTXYGraph上尝试了masksToBounds
和masksToBorder
。
答案 0 :(得分:1)
我认为处理此问题最简单的方法是简单地扩展您的范围。 CPTPlotRange中有一种方法可以很容易地将给定范围扩展一个固定的百分比(例如1%)。我认为主要的测试应用程序示例甚至可以显示这一点。
另一种选择是在CPTPlotArea(plotArea)和可能的CPTPlotAreaFrame(plotAreaFrame)上关闭masksToBounds和/或masksToBorder。您可以通过图表的属性访问它们。
答案 1 :(得分:0)
这可能会有所帮助..
图表本身的默认填充(不是绘图区域框架)每边20像素。你也可以改变它。
graph.paddingLeft = 0.0;
graph.paddingTop = 0.0;
graph.paddingRight = 0.0;
graph.paddingBottom = 0.0;