将特定轴从图形复制到新图形

时间:2014-02-02 17:48:59

标签: matlab histogram figure

我已经将一个数字保存为MATLAB中的.fig文件,我在一段时间后重新打开了。

有没有办法访问直方图中保存的数据?我想通过使用hist()命令而不是imhist将其重新绘制成一个新图形(原因是matlab2tikz无法正确导出由imhist绘制的直方图)。

我想我可以在知道直方图的句柄时访问数据,对吗?

修改

A = findall(gcf,'type','axes');

然后检查

get(A(i))

查看绘制直方图的轴。这有效但我必须弄清楚如何检索实际数据。 但我不知何故假设我必须查看轴句柄的父/子(取决于MATLAB创建的对象的层次结构)。

1 个答案:

答案 0 :(得分:0)

好吧我终于明白了。 正如我在上面的编辑中所写,您可以使用findall来查找所有轴对象的句柄。 使用它之后,在找到轴ID并存储它(X/YLim - th之后,通过查看get(A(i))k之类的条目,尝试找出哪个句柄指向哪些轴。 A)到idx = A(K)中的元素,使用此脚本从imhist() - >绘制的直方图中读取条目。这些值按照箱子(YData)的描述进行复制,然后由hist重新绘制成新的数字:

% ----------------------------------------------------------------------- %
b = get(idx);
b = get(b.Children); % Get the Plot-Handle
x = b.XData; % Bins
y = b.YData; % Bin-Counts

data = [];
for i = 1:length(x)
    data = [data x(i)*ones(1,y(i))]; % replicate data
end

figure
hist(data, length(unique(x)));
xlim([min(data) max(data)]);

编辑:for循环是一个快速而肮脏的;-)我确定有一个更好的解决方案,例如使用repmat,但我只对快速解决方案感兴趣: - )