3

したがって、透過性が有効になっている 3 行 (技術的にはパッチ) があります。これらの行は、パッチライン FEX 提出によって生成されました。FEX エントリは、データの末尾に NaN を追加してパッチを線のように見せることでうまく機能するため、線の終点間に大きな黒いパッチが作成されません。

私の行は次のようになります

__        __
  \      /
_  \    /  _
 \  \__/  /
  \______/

パッチは、左側の端点から右側の端点まで、上部を横切って直線で伸び、下部の線に従います。実際のパッチは隠されている (描画されていない) ため、ユーザーに表示されるのは線だけです

問題は、一番上の行の一番下のこぶをクリックしたい場合、そのパッチの一部であるため、一番下の行をクリックしたように動作することです。

私はいくつかの回避策を考えましたが、皆さんが欠陥を指摘したり、回避策で見逃した可能性のあるアイデアを追加したりできることを望んでいました.

回避策 #1

理想的には、透明な線の上に実際の線 (線シリーズ obj.) を作成します。パッチでヒットテストをオフにして、実際の行を非表示にしますが、ヒットテストをオンにします。私が 99% 確信している問題は、visibilty がオフの場合、オブジェクトをクリックできないことです。誰かがその問題を回避できる場合 (文書化されているかどうかに関係なく)、それは素晴らしいことです。

回避策 2

patchline hittest プロパティをオフにします。モック ライン オブジェクトを作成します。パッチライン座標に従います。線幅を非常に小さくして、線が理想的にはほとんど見えないようにし、代わりにヒット テストのクリックがこれらの線を指すようにします。誰かが前にこのようなことを試したことがありますか? (仕事中なので試せません)

回避策 #3

私は本当にこれをやりたくないことに注意してくださいもちろん、パッチ/ラインオブジェクトのヒットテストをオフにし、軸のボタンダウンを使用して、どのパッチオブジェクト (ライン部分のみ) に最も近いかを把握することができます。

繰り返しになりますが、考えられる回避策、一般的な状況などについての洞察をいただければ幸いです。

ありがとう、ショーン

4

2 に答える 2

0

オレグ、あなたの最初の投稿はどういうわけか私に私のエレガントな解決策を思いつくように促しました. (方法を聞かないで、私の「ありがとう」を受け入れてください(笑))

私の問題に対する洗練された解決策として、パッチのプロパティを超えて、軸の子の順序に目を向ける必要がありました。どの線も互いに交差しないという仮定の下で、一番下の線が最初に、次に 2 番目に低い線という順序で、一番上に到達するまでそれらをプロットすることができました (効果的に子の順序を並べ替えます)。

他の誰かがこれに出くわした場合、(線が交差しないと仮定して) できることは、プロットで最初の Y (または任意の値) を最低から最高 (この場合) に並べ替えることです。 sort 関数はインデックスを返します。

目の前にコンピューターはありませんが、最終的に行うことは、インデックスをループする非連続の for ループを効果的に作成することです。

何かのようなもの:

for i=[6 2 5 4 1 3]

  plot(X(:,i),Y(:,i))

end

6 列目が最低のデータで、2 列目がプロットで 2 番目に低いデータなどです。

于 2013-06-18T19:29:27.340 に答える
0

この問題は、2 つの線の太さのパッチで説明できます。そのうちの 1 つは軸に平行ではありません。

patch([2 8 8],[5 10 10],'w','EdgeColor','b','EdgeAlpha',0.4,'LineWidth',3)
patch([2 8 8],[4  4  4],'w','EdgeColor','r','EdgeAlpha',0.4,'LineWidth',3)
xlim([0 10])
ylim([3 11])

軸の 1 つに平行な線以外は選択できません。

  • 回避策 #1: 不可能。
  • 回避策 #2: かなり目立つのに、なぜ透明な線が必要なのですか?
  • 回避策 #3: 唯一の方法...

回避策: パッチのクリック可能性を改善するための技術的な要求を TMW に送信します。

于 2013-06-18T19:11:39.007 に答える