2012-04-09 137 views
1

我已经有了很好的回答,并且在我的代码中尝试了几种解决方案,到目前为止还没有发现任何解决方案。如何填充图形以便线条不被边缘裁剪?

我有一个线图,我正在绘图,一个CPTScatterPlot图,我有正确的点添加到它。我想将每个点显示为一个直径约3-5像素的点,并通过约3像素宽的线连接。这一切工作正常。

问题在于,当绘图沿着图形托管视图的一条边线直线时,线条和圆点会被剪裁,并且看起来并不正确。

这是它应该是什么样子一个样机:
This is what it should look like

这是我看到太多的时间在此刻的效果:
enter image description here

我的小道歉图像,但希望你可以看到,在第二个图像中,线和点仅在图形视图中呈现几个像素,而不是全部在视图中。在第二个数据中,前75%的数据实际上在y = 1,然后下降到y = 0。

如何将图形组件的图形插入几个像素以防止剪切任何形状?

到目前为止:

  • 我已经尝试设置图上的填充,但只是 合同,它吸引到该地区,我想以腾出空间给它,我不使用标题 。

  • 我也尝试添加到基于我在后台更新的数据重新计算的最小/最大x/y范围设置。这个 的作品,但显然只有当我添加到这些值的数量是 正确的关系到将用于我输入的 数据值的绘图比例。

  • 我在Mac OS上使用NSView(实际上是CPTGraphHostingView),所以clipsToBounds不可用。另外,我尝试了CPTXYGraph上的masksToBoundsmasksToBorder

回答

1

我认为处理这个问题最简单的方法就是简单地扩展你的范围。 CPTPlotRange中有一个方法,可以很容易地将给定范围扩展一个固定的百分比(例如1%)。我认为主要的测试应用程序示例甚至显示了这一点。

另一种选择是关闭CPTPlotArea(plotArea)和CPTPlotAreaFrame(plotAreaFrame)上的masksToBounds和/或masksToBorder。您可以通过图表的属性访问它们。

+0

将最小值和最大值的填充添加到最后。只需调整以获得良好的结果即可。 – danpalmer 2012-04-10 22:29:01

0

这可能是帮助..

在曲线图上本身(不是绘图区域帧)的默认填充是在每一侧上20个像素。你也可以改变它。

graph.paddingLeft = 0.0; 
graph.paddingTop = 0.0; 
graph.paddingRight = 0.0; 
graph.paddingBottom = 0.0;