2012-04-09 74 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;