Scilabで行列をグラフ化する方法とは?
- Scilabで行列をグラフ化する方法について質問させてください。
- Matplotを使用して行列をグラフ化しようとした際にオートスケールが正常に機能しない問題が発生しています。
- 行列内の数値が0未満の場合、カラーマップによって黒色で表示されるため、設定したグラフの見た目が悪くなります。
- ベストアンサー
Scilabで行列をグラフ化したいのですが…
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に近づくほどその色を黒にしていく。 こんなグラフが欲しいと思っています。 できますでしょうか?? 無知ですみません、よろしくお願いします。
- millefeuie
- お礼率85% (6/7)
- その他(プログラミング・開発)
- 回答数2
- ありがとう数2
- みんなの回答 (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) //--------------------------------------------------------
その他の回答 (1)
- dip28p
- ベストアンサー率100% (1/1)
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) //---------------------------------------------
お礼
>dip28p 理想の形にすることができました! 本当に見ず知らずの私にアドバイスくださりありがとうございました♪
関連するQ&A
- scilabでのグラフ描画時の軸設定
scilabで2次元グラフを描くときの軸の設定 scilabのカラー描画であるMatplotを使ってグラフを描画しているのですが、縦軸と横軸の交点が思い通りに設定できません。 また、グラフと軸がずれて配置されてしまいます。 現在このようなプログラムでグラフを描画しています。 u=[1:1:5;1:1:5;1:1:5;1:1:5;1:1:5]; umin=min(u(:)); umax=max(u(:)); u=255*(u-umin)/(umax-umin); Matplot(u);//行列プロット set(gcf(),'color_map',jetcolormap(256)); colorbar(umin,umax);//color barの表示 g=gca(); g.axes_visible='off'; g.children.data=g.children.data($:-1:1,:);//原点を左下にする xtics=0:1:4;//x軸目盛の設定 drawaxis(x=xtics,y=0.5,dir='d',tics='v'); g.children(1).tics_labels=string(-2:1:2); ytics=0:1:4;//y軸目盛りの設定 drawaxis(x=0.5,y=ytics,dir='l',tics='v'); g.children(1).tics_labels=string(1:1:5); このプログラムを実行すると、縦軸が0.5で、横軸が-1.5のところで交わってしまいます。 また、カラー表示されたグラフが縦軸・横軸共に1.5くらいずつずれてしまいます。 ちなみにこのプログラムは以下のURLのサイトのプログラムを参考にしたものです。 http://vision.kuee.kyoto-u.ac.jp/lecture/dsp/?menu=mat_figure 初心者の質問で申し訳ありませんが、かなり困っています。ご指導、アドバイスよろしくお願いいたします。
- 締切済み
- その他(プログラミング・開発)
- SCILABでの行列計算のエラー文が理解できない。
SCILABという計算ソフトを使用して次のような計算を行っていました、 A=[1 2 3; 4 5 6; 7 8 8.999999999999] B=[-1 0 1]^T (^Tは転置行列の意) Aの逆行列とBの積A^(-1)*B=Xとして、det(X)を計算したところ、次のようなエラーが出てきました。 ↓ matrix is close to singular or badly scaled. rcond=7.7099D-17 このエラー文の意味が不明です。 直訳すると matrix is (行列は) close to (ほぼ、ほとんど) singular (特異である) or (もしくは) badly scaled.(好ましくないスケール) となりますが、このエラーはつまりどういう意味なのでしょうか。 直訳など、何が問題なのかが知りたいです。 どなたかわかる方、ご教示のほどお願いいたします。
- ベストアンサー
- 数学・算数
- EXCEL2007 円グラフ表示されない
EXCEL2007で円グラフを読み込ませています。 その円グラフがうまく表示できず困っています。 <例> A B _________________ 1 5 10 2 3 5 3 2 5 4 0 3 5 5 2 上記のようにセルに数値が入っているとします。 この場合、B列には0を含む数値がないので問題なく 円グラフが5分割色わけされるのですが・・・ A列に0が含まれている場合、0の部分だけが省かれ 他の数値が反映され色わけされるイメージでしたが なぜか全て同じ色になってしまいます。 EXCEL2003では0の部分は省かれるのですが EXCEL2007になると全て同じ色になるのは どこか設定の問題でしょうか?仕様でしょうか?
- ベストアンサー
- オフィス系ソフト
- 行列のノルム
以下、xはn次元ベクトル、A=(a(i,j))はn×n行列とします。 ■||x||_2 = √{Σ_[j=1~n](x_j)^2} (ユークリッドノルム) ※x_jは、xの第j成分です。 このノルムを採用したとき、行列Aのノルムは以下のように定義することが出来る。 ・||A||_2 = MAX_[x]{||Ax||_2/||x||_2} この具体的な表現は以下で与えられる、らしいのですが…。 ・||A||_2 = MAX_[k]{√(μ_k)} (μ_kは、BをAの転置行列として、BAの固有値。) 本を読んでも、「簡単に導出できるので試みられたい。」とかしか書かれておらず、困っています。どうやって導出するのでしょうか?僕には簡単に導出できません。 また、 ■||x||_∞ = MAX_[k]{|x_k|} ※x_kは、ベクトルxの第k成分。 このノルムを採用したとき、行列Aのノルムを ・||A||_∞ = MAX_[x]{||Ax||_∞/||x||_∞} と定義できて、この具体的な表現は、 ・MAX_[i]{Σ_[j=1~n]|a(i,j)|} で与えられるらしいのですが、本を読んでも、これも証明が省かれています。 ||A||_1についてはきちんと証明が載っているのですが…。 どちらか片方ずつでも、おねがいします。
- ベストアンサー
- 数学・算数
- 行列の比較
M行N列(M×N)の行列A,B,Cがあるとき。 行列Aに対してBとCどちらが近いかを比較する方法には どのようなものがあるのでしょうか。 例 行列A(3×3) 1 1 1 1 1 1 1 1 1 行列B(3×3) 1 1 2 2 1 1 1 1 1 行列C(3×3) 2 2 2 2 2 2 2 2 2 例では誤差で考えるとBの方がAに近いのですが 行列内の互いの数値関係が同じ(同じ値)ということで Cの方がAに近い性質を現していることを数値で示したいと考えています つまり求めたいのは相関(?)のような近さです 思いつくのは一列づつ相関をとって最終的に全ての行での 平均をとる方法ですが 他に上手く(出来れば一つの数字で)近さの程度を表す方法や 一般的な方法があれば教えて頂けないでしょうか。 よろしくお願い致します。
- ベストアンサー
- 数学・算数
- エクセルのグラフの色を統一するやり方を教えてください!
こんにちは。 エクセルでグラフを描いているのですが、ひとつのグラフに何本かの線や点の色を統一したいのですが、一度に全ての色を同じにするやり方を教えて頂けないでしょうか? 具体的に困っている所は、 ひとつのグラフの中に160本程の線を表示させたいのですが、 自動で描くと 1本目(系列1)が青、 2本目がピンク、 3本目が黄色・・・ といった感じになりますが、これを全て黒にしたいのです。 1本1本色を変えていくと手間がかかってしょうがありません。 初期設定で黒に指定する、または色のついたグラフを一気に黒に変換する、 といった手法はございませんか? どなたか教えてください! 宜しくお願い致します。
- ベストアンサー
- オフィス系ソフト
お礼
>dip28pさん ありがとうございます!!自分でも考えてみて一応形には なったのですが、こちらのプログラムを参考にさせてもらったほうが より理想に近いものになりました!!ありがとうございます。 また、続けて質問する形で非常にあつかましいのですが グレーカラーマップ、ホットカラーマップなどは自分で作ることができるのでしょうか? たとえば、「ブルーカラーマップ」で数値の変化で白→青→黒 と言った感じです。調べた限りではできなさそうな感じではありますが・・・。 お手数かけます、よろしければご回答のほどよろしくお願いいたします。