1

私はこれに対する答えをかなりよく見てきましたが、コードでいくつかの解決策を試しましたが、これまでのところ何も見つかりませんでした。

プロットしている折れ線グラフとCPTScatterPlotグラフがあり、ポイントが正しく追加されています。これらの各ポイントを、直径約3〜5ピクセルのドットとして表示し、幅約3ピクセルの線で接続します。これはすべて正常に機能します。

問題は、プロットがグラフホスティングビューのエッジの1つに沿って直線である場合、線と点がクリップされ、まったく正しく表示されないことです。

これは、どのように表示されるかを示すモックアップです。
これはそれがどのように見えるべきかです

そして、これは私が現在多くの時間見ている効果です:
ここに画像の説明を入力してください

小さな画像をお詫び申し上げますが、2番目の画像では、線と点がグラフビューに数ピクセルしかレンダリングされておらず、完全には表示されていないことがわかります。2番目のデータでは、最初の75%のデータは実際にはy = 1であり、その後y=0に低下します。

グラフコンポーネントの描画を数ピクセルずつ挿入して、形状のクリッピングを防ぐにはどうすればよいですか?

ここのところ:

  • グラフにパディングを設定してみましたが、描画する領域が縮小するだけなので、使用していないタイトル用のスペースを確保していると思います。

  • また、バックグラウンドで更新しているデータに基づいて再計算する最小/最大x/y範囲設定に追加してみました。これは機能しますが、明らかに、これらの値に追加する量が、入力するデータ値に使用される描画スケールに対して正しい場合に限ります。

  • 私はNSView(実際にはCPTGraphHostingView)を使用しているMac OSを使用しているためclipsToBounds、利用できません。また、CPTXYGraphを試してみましたmasksToBoundsmasksToBorder

4

2 に答える 2

1

これを処理する最も簡単な方法は、範囲を少し拡張することだと思います。CPTPlotRangeには、特定の範囲を一定の割合(1%など)だけ簡単に拡張できるメソッドがあります。メインのテストアプリの例でも、これが実際に動作していることが示されていると思います。

別のオプションは、CPTPlotArea(plotArea)および場合によってはCPTPlotAreaFrame(plotAreaFrame)でmasksToBoundsおよび/またはmasksToBorderをオフにすることです。グラフのプロパティを介して両方にアクセスします。

于 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 に答える