1

我已经很好地环顾了这个问题的答案,并在我的代码中尝试了几种解决方案,到目前为止还没有找到。

我有一个正在绘制的折线图,一个CPTScatterPlot图表,并且我已经正确地添加了点。我想将这些点中的每一个显示为直径约 3-5 像素的点,并由约 3 像素宽的线连接。这一切都很好。

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

这是它应该是什么样子的模型:
这就是它应该的样子

这是我目前大部分时间看到的效果:
在此处输入图像描述

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

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

至今:

  • 我已经尝试在图表上设置填充,但这只是缩小了它绘制的区域,我想为我不使用的标题腾出空间。

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

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

4

2 回答 2

1

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

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

于 2012-04-09T17:49:08.190 回答
0

这可能会有所帮助..

图形本身(不是绘图区域框架)的默认填充是每边 20 像素。你也可以改变它。

graph.paddingLeft = 0.0;
graph.paddingTop = 0.0;
graph.paddingRight = 0.0;
graph.paddingBottom = 0.0;
于 2012-04-18T16:00:30.237 回答