9

私は次のようなMATLABプロットを持っています:

ここに画像の説明を入力してください

ここで、各サブプロットのY値は1次元配列に格納されます。私がやりたいのは、上のグラフが特定の高さ、たとえば0.5より上にある領域を見つけることです。他のグラフでも同じ領域を強調したいと思います。

これが私が話していることの例です:

ここに画像の説明を入力してください

私がこれまでに見つけた最高のものはarea、MATLABグリッド上の領域を埋める関数です。ただし、誰かがそれを透明にする方法と、多くの領域コマンドを実行せずに複数の領域を塗りつぶす方法を教えてくれれば、それは素晴らしいことです。

それ以外の場合は、構造体内の領域のグループを識別し、forループを使用してそれらをプロットできます。これが私がそれをする方法のいくつかの疑似コードです:

countstruct = 1;
for i = 1:length(yValue)
    if (yValue(i) > 1)
        outside = [outside, i]
    else
         areas(countstruct).outside = outside;
         countstruct = countstruct + 1;
         clear outside;

     end
 end

次に、領域をプロットするためにこれを行います:

for i = 1:length(areas)
    area(areas(i).outside, ones(length(area), 1)*14, "SomeThingToMakeItTransperant')
end

そして、私はサブプロットごとにこれを行います。明らかに、これは非常に複雑なので、ライナーを1つ持つ方がよいでしょう。誰もが1つを考えることができますか?

4

1 に答える 1

4

私はそれを理解しました、私が提供した疑似コードは正しい領域を取得します。次に、これを行うことができます。

for i = 1:length(areas)
    harea = area(areas(i).outside, ones(length(areas(i).outside), 1)*14, 'LineStyle', 'none')
    set(harea, 'FaceColor', 'r')
    alpha(0.25)
    hold on
end

alphaほとんどのエリアプロットで透明度を設定します。これを質問のコードと組み合わせると、次のようになります。

これは、MATLABでプロットするのにかなりクールです。

于 2012-12-06T01:34:42.963 に答える