【问题标题】:Position a matlab figure generated in a GUI for automatic save定位在 GUI 中生成的 matlab 图以进行自动保存
【发布时间】:2014-06-17 18:00:58
【问题描述】:

我在自动保存 GUI 轴面板中绘制的图形时遇到了一些问题。这是我到目前为止的代码:

x= [1 2 3 4 5 6 7 8 9 10];
y = [10 5 6 7 8 20 5 4 3 8];

p = polyfit(x, y, 6);
r = polyval(p, x);

xlabel(handles.axes1, 'Time (\mus)');
ylabel(handles.axes1, 'Angular Velocity (rad/s)');
title(handles.axes1, 'Angular Velocity vs. Time (kT Test)');

aV = plot(handles.axes1, x, y, x, r, 'g--');

%Save figure
ftmp = figure();
copyobj(handles.axes1, ftmp);
set(ftmp, 'units', 'normalized', 'outerposition', [0 0 1 1]);
%Create file name
fileName = ['Test' num2str(time(1)) '_' num2str(time(2)) '_' num2str(time(3))]
saveas(ftmp, fileName, 'png');

图像会自动保存,但显示不正确。例如,保存的图像如下所示:

如您所见,图像非常倾斜。但是,如果我手动保存图像,则整个图形将居中并保存。有没有办法在自动保存的同时重新定位图形? (请注意,我正在寻找不使用export_fig 的解决方案。

我已经搜索了一段时间,类似问题的答案都没有为我的问题提供解决方案。

感谢任何建设性的建议。

【问题讨论】:

  • 您是否有理由要以这种方式创建图形? (即使用copyobj等)?如果您只想要一个图形并保存为 png,则有更简单的方法。
  • 我没有特别需要这样做。我使用 copyobj 的唯一原因是因为这就是我在本网站和 mathworks 上的多个答案中看到它的方式。如果有更好的方法,我愿意尝试。

标签: matlab matlab-figure


【解决方案1】:

我会这样做:

x= [1 2 3 4 5 6 7 8 9 10];
y = [10 5 6 7 8 20 5 4 3 8];

p = polyfit(x, y, 6);
r = polyval(p, x);

figure(1);
clf();

plot(x, y, x, r, 'g--');

xlabel('Time (\mus)');
ylabel('Angular Velocity (rad/s)');
title('Angular Velocity vs. Time (kT Test)');

time = clock();
fileName = ['Test' num2str(time(1)) '_' num2str(time(2)) '_' num2str(time(3))]

print('-f1','-dpng', fileName);

不确定你想要的文件名到底是什么,所以我只是在我去的时候编的。如果您想使用不同的文件名,则不需要 time=clock()

还要注意,您可以使用saveas(1, fileName, 'png'); 作为最后一行。

【讨论】:

  • 我试用了你的代码。不幸的是,我的身材在保存时仍然歪斜。
  • 呵呵,那一定和你的设置有关。我在我的电脑上试了一下,生成的 png 文件看起来不错。没有歪斜。所以,问题是向右移动,对吧?
  • 图(1)中的图像看起来是正确的还是偏移了?只是png保存吗?
  • 是的。我刚刚回忆起为什么我真的使用了copyobj——这些对象的句柄必须是一个数字。由于这是在 GUI 中,因此我必须将对象复制到图形中才能将有效句柄传递给函数。我假设这一定是发生倾斜的地方。
  • 但是如果你根据我上面的代码得到一个转变,那么我认为问题出在其他地方。如果你启动一个新的 Matlab 并运行我上面的代码,应该不会发生转变。
猜你喜欢
  • 2019-06-06
  • 1970-01-01
  • 2017-04-24
  • 1970-01-01
  • 1970-01-01
  • 2020-02-27
  • 2012-10-21
  • 2015-05-31
  • 1970-01-01
相关资源
最近更新 更多