1

我正在尝试编写一个 Matlab 脚本来分析两组特定的数据,为它们创建直方图,并将它们写入一个文件,您可以在其中看到两个直方图在一个图上重叠。

我创建了一个功能脚本,它为一组数据创建了直方图,基本上是这样的:

h1=figure;
hist(data,nbins:;

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

然后我尝试简单地添加第二行:

h2=figure;

并将打印功能更改为包含 h2。那显然行不通。我发现我不能同时拥有带有打印功能的 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 网站上没有找到任何可以帮助我解决这个问题的东西,我也没有在任何其他网站上找到任何东西。我正在使用通过 SSH 连接到不同服务器的 Linux 计算机,所以我可以查看我制作的绘图的唯一方法是将它们保存到一个文件然后打开它们。如果您对完成我在第一段中概述的任务有任何建议,请告诉我。谢谢你。

4

1 回答 1

1

一种方法是对不同的直方图使用不同的轴。您可以为此使用 SUBPLOT:

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

另一种方法是找到一个公共 bin ( 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 回答