1

2 つの特定のデータ セットを分析し、それらのヒストグラムを作成し、それらを単一のファイルに書き込んで、両方のヒストグラムが 1 つのプロットに重なっているのを確認できるようにする Matlab スクリプトを作成しようとしています。

基本的に次のような 1 セットのデータのヒストグラムを作成する機能するスクリプトを作成しました。

h1=figure;
hist(data,nbins:;

print(h1,'-dpng','hist.png)

次に、次の 2 行目を単純に追加しようとしました。

h2=figure;

h2を含むように印刷機能を変更しました。それは明らかにうまくいきませんでした。print 関数では h1 と h2 の両方を使用できないことがわかりました。

インターネットを検索してこれを回避する方法を探した後、代わりに saveas を使用することにしました。私は次のようになりました:

h=findobj(gca,'Type','patch');
hist(data1,nbins);
hold on;
hist(data2,nbins);

set(h(1),'FaceColor','r','EdgeColor','k');
set(h(2),'FaceColor','b','EdgeColor','k');

saveas(h,'-dpng','hist.png')

しかし、これもうまくいきません。Mathworks の Web サイトでこの問題を解決するのに役立つ情報は見つかりませんでした。また、他のサイトでも何も見つかりませんでした。SSH 経由で別のサーバーに接続している Linux コンピューターを使用しているため、作成したプロットを表示できる唯一の方法は、それらをファイルに保存してから開くことです。最初の段落で概説したように、私のタスクを達成するための提案があれば教えてください。ありがとうございました。

4

1 に答える 1

1

1 つの方法は、異なるヒストグラムに異なる軸を使用することです。これには SUBPLOT を使用できます。

subplot(2,1,1)
hist(data1,nbins);
subplot(2,1,2)
hist(data2,nbins);

もう 1 つの方法は、共通のビン ( ) を見つけて、出力をベクトルxに返すことです。hist次に、プロットに BAR 関数を使用します。

nbins = 20;
x = linspace(min([data1(:);data2(:)]),max([data1(:);data2(:)]),nbins);
h1 = hist(data1, x);
h2 = hist(data2, x);
hb = bar(x,[h1(:),h2(:)],'hist');

% change colors and set x limits
set(hb(1),'FaceColor','r','EdgeColor','k');
set(hb(2),'FaceColor','b','EdgeColor','k');
gap = x(2)-x(1);
xlim([x(1)-gap x(end)+gap])
于 2013-04-10T20:06:04.480 に答える