5

Octave で別のヒストグラムの上に 1 つのヒストグラムを作成しています。

    hold on;
    hist(normalData(:, column), 10, 1, "facecolor", "g");
    hist(anomalousData(:, column), 10, 1, "facecolor", "r");
    hold off;

ここに画像の説明を入力

ご覧のとおり、オーバーラップがあり、赤いデータが緑のデータの一部を覆い隠しています。これを回避する方法はありますか?重なっている部分の色をブレンドさせることでしょうか。

4

2 に答える 2

6

あなたの問題には長い道のりがあります。残念ながら、透明度「facealpha」のプロットプロパティはhist()関数では機能しません。

以下のコードは私の回避策を示しています。デフォルトのグラフィックツールキットはfltkである可能性があるため、gnuplotに変更します。

clear all

graphics_toolkit("gnuplot")

A = randn(1000,1);
B = randn(1000,1)+2;

それでもhistを使用して分布を計算します

[y1 x1] = hist(A,10);
[y2 x2] = hist(B,10);

次に、履歴データを、透明性を可能にするプロット用の形式に変換します。

[ys1 xs1] = stairs(y1, x1);
[ys2 xs2] = stairs(y2, x2);

xs1 = [xs1(1); xs1; xs1(end)];  xs2 = [xs2(1); xs2; xs2(end)];
ys1 = [0; ys1; 0];  ys2 = [0; ys2; 0];

塗りつぶし機能を使用してデータをプロットします

clf
hold on; 
h1=fill(xs1,ys1,"red");
h2=fill(xs2,ys2,"green");

透明度を希望のレベルに変更します。

set(h1,'facealpha',0.5);
set(h2,'facealpha',0.5);
hold off;

もっと評判が良ければ画像を投稿します。

于 2013-02-05T01:20:42.120 に答える