Contents



subplot()でcolumnとlowの大きさが違うfigureを混在させることはできますか?

AAAABBBB
AAAABBBB
AAAABBBB
AAAACCCC
AAAACCCC

subplot(5,8,[1 36])
subplot(5,8,[5 24])
subplot(5,8,[29 39])

でできます。ただしTickLabelが別の軸の上に重なることがあるみたいです。工夫して微調整してください。

subplot('position',[0.1,0.1,0.4,0.8])
%axisの左下の場所を指定。座標はfigureに対する相対位置。
%'position',[x座標,y座標,x軸の大きさ,y軸の大きさ]

とかの方が微調整が楽かもしれません。

補足:subplot(5,8,[1 36])は、subplot(5,8,1)ででてくるaxisの左上の座標を、左上の座標として、subplot(5,8,36)ででてくるaxisの右下の座標を、右下の座標をして新しいaxisをつくります。なんか説明が難しい。

(morimo) 2006-12-14 15:19:21


既にある複数のfigureをまとめて一つのfigureにすることはできますか?

copyobjでできます。ただしかなり面倒くさいです。詳しくはhelp copyobjまで。補足が必要であればもう一度質問してください。

(morimo) 2006-12-14 15:38:18


plotyyという関数で、2つのチューニングカーブを重ね描きしたいのですが、ただのplotではなくてerrorbarを使いたいのです。しかしながら、plotyyでは、x,yしか引数に取れないようで、どうやればいいのか分かりません。教えてください。明日までに。

軸を重ね描きすればできます。

X = 1:10; %共通のx軸
axis1 = axes('Ycolor','b')
hold on
errorbar(X, rand(1,10),rand(1,10)/10);
%2つ目の軸を作り、y軸を右に表示。軸の背景を透明にして1つ目の軸が見えるようにする。
axis2 = axes('YaxisLocation','right','Ycolor','r','Color','none','xtick',[])
hold on
errorbar(X, rand(1,10)*20,20*rand(1,10)/10,'r');

(morimo) 2006-12-20 13:59:50


hist()で表示されるヒストグラムの色を変えることは出来ないのでしょうか?

histData = hist(data,x);
bar(x,histData,'r');

とかすれば、色を指定することができます。

(morimo) 2006-11-27 14:00:51


histc()の出力をplotする時にhist()のようなbinで区切られた表示にすることはできますか?

これは、ヒストグラムを構成するbarとbarの間に
隙間をつけたいということでしょうか。

bar(x,histData,width,'histc'); %widthは0~1の間

とすれば、1つのbarの太さが、xの間隔に対してwidth倍になります。widthに1未満を指定すれば、隙間が開きます。

(morimo) 2006-11-27 14:00:51


2つのヒストグラムを重ね書きした際にオーバーラップした場所の色を変える方法はあるのでしょうか。

ヒストグラムを重ね書きした際にオーバーラップした場所の色を変えるのは多分難しいです。重なる部分と重ならない部分を別のデータとして用意し、

bar(histDatas, 'stacked'); %histDatasの中の順番をうまい具合にしてください。

とするか、

bar(histData1,'b');
hold on
h=bar(histData2,'r');
set(h,'facealpha',0.5);

として、2つ目のデータを半透明にすれば、データが重なった部分だけ下のヒストグラムの色と混ざって、色が変わります。(この例では、重なった部分だけ紫色になります。ただし、重ならない部分は背景の白と混ざってピンク色になります。それがいやだったら、

bar(histData2,'r');
hold on
bar(histData1,'b');
h=bar(histData2,'r');
set(h,'facealpha',0.5);

としてあらかじめ、一番下にhistData2のヒストグラムを描いておけば重ならない部分は赤のままになります。ただし図のオブジェクトがかなり多くなって、編集するのがかなりめんどくさくなりますが。)もっとエレガントな方法知っている方がいたら教えてください。

(morimo) 2006-11-27 14:00:51


xyz軸の空間上に、大量の点をプロットしたいのですが、どのようにしたらいいでしょうか?

plot3(x,y,z,'.')またはscatter3ではだめですか。大量にplotすると重くなるということでしょうか。私が以前やったときには、pen4-2GHz,onboard videoで数万点は大丈夫でした。

(morimo) 2007-01-22 13:35:41


meshで2次元の図を描いて、view(2)で真上から見るようにして、その上にcontourで違う線画を
重ね描きしたいんですけど、どうすればいいんでしょう。普通にhold onしてもできないし。

結構面倒くさいです。contourはz軸で0の高さに作られるので上から見えるようにしたければ、contourを構成するpatchの高さをmeshより上にしなければなりません。

Data1 = rand(10);
Data2 = rand(10);
mesh(Data1);
hold on
[c h] = contour(Data2);
maxD1 = max(Data1(:));%meshの最大の高さを取得
hc = get(h,'children');%matlab7.0以降で必要。6.5なら必要なし
for l = 1:length(hc)
if strcmp(get(hc(l),'type'),'patch')%objがpatchの場合のみ
NumData = size(get(hc(l),'xdata'));%patchを構成する点の数を取得
set(hc(l),'zdata',repmat(maxD1,NumData));
end
end

(morimo) 2007-01-22 14:59:19


plotをするごとに自動で色を変える方法はないでしょうか?ColorOrderを変えて set(0,'DefaultAxesColorOrder',[1 0 0;0 1 0;0 0 1]); plot(x,y); hold on; plot(x,z); としても同じ色で出力されてしまいます.どなたかご教授ください.

hold on 後に複数回plotを呼び出して色を自動で変える方法は分かりませんが、ベクトルをまとめて一括 plotしてはいかがでしょう。x, y, zが同じ要素数のベクトルだとして、

plot(x, [y z])


plot(x, [y; z])

これなら指定したColorOrderが反映されると思います。質問の意図を取り違えていたらまた書き込んで下さい。

(てっぺ) 2007-05-22 00:56:56


かっこいいヒストグラムが書きたいです。

かっこいいヒストグラムの描き方は
私の手にはとても負えません。どなたかお願いします。

(morimo) 2006-11-22 13:17:40


名前:
コメント:

すべてのコメントを見る
最終更新:2009年01月07日 23:36