プロが教えるわが家の防犯対策術!

Scilabで行列をグラフ化したいのですが…

すみません、Scilabを使っていて詰まってしまったので初心者なゆえ質問させてください。

行列をMatplotを使ってグラフ化しようとしたのですが、
グラフ化するとなぜかオートスケールがきかず出力画面が真っ黒になってしまいます。

おそらく、カラーマップでナンバー1が黒なので行列内にある2未満の数値がすべて
黒として表示されているのだと思います。
行列内の数値はすべて0以上1未満でしたので。


ここで例えば、
A=[0 0.5:1 2];
Matplot(A)

とすると要素(2,2)だけが青色でほかすべてが黒の二次元グラフができるかと思います。
(カラーマップ2が青なので)


理想は行列内のMAX値を一番明るくし、0を今までどおりの黒にしたいです。
ここに行列Bがあり、

B=[0 0.3 0.2:0 0 0.5]
とするならば、

0.5を一番明るくして0に近づくほどその色を黒にしていく。
こんなグラフが欲しいと思っています。
できますでしょうか??

無知ですみません、よろしくお願いします。

A 回答 (2件)

ご希望の感じになるのかどうかわかりませんが、


グレースケールでやるっていうのはどうでしょう?
//--------------------------------------------------------
lines(0)
Crange=100 // 増やすと分解能が上がる。(上限不明)
B=[0:0.1:0.9 ; 1:0.1:1.9 ; 2:0.1:2.9 ; 3:0.1:3.9]

Bg=B.*(Crange/max(B)) // Bの最大値をCrangeの最大値にしたMatrix
Matplot(Bg) // ColorMap
xset("colormap",graycolormap(Crange)) //グレースケール化
lines(50)
//--------------------------------------------------------
    • good
    • 0
この回答へのお礼

>dip28pさん
ありがとうございます!!自分でも考えてみて一応形には
なったのですが、こちらのプログラムを参考にさせてもらったほうが
より理想に近いものになりました!!ありがとうございます。

また、続けて質問する形で非常にあつかましいのですが
グレーカラーマップ、ホットカラーマップなどは自分で作ることができるのでしょうか?
たとえば、「ブルーカラーマップ」で数値の変化で白→青→黒
と言った感じです。調べた限りではできなさそうな感じではありますが・・・。
お手数かけます、よろしければご回答のほどよろしくお願いいたします。

お礼日時:2008/10/26 16:42

helpでColormapを調べると、こんな感じのサンプルがありました。


なんとか調整すれば使えるかもしれません。
//---------------------------------------------
lines(0)
n=32;
B=[0:0.1:0.9 ; 1:0.1:1.9 ; 2:0.1:2.9 ; 3:0.1:3.9]

Bg=B.*(n/max(B))
Matplot(Bg)

cc=linspace(0,1,n/2)';
c0=zeros(cc);
c1=ones(cc);

r=[c0;cc];
g=[c0;cc];
b=[cc;c1];

cmap=[r g b];
f=gcf(); f.color_map=cmap;
lines(50)
//---------------------------------------------
    • good
    • 0
この回答へのお礼

>dip28p
理想の形にすることができました!
本当に見ず知らずの私にアドバイスくださりありがとうございました♪

お礼日時:2008/10/28 21:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!