Figure exported from GUI showing wrong position

I wanted to export a figure generated in GUI by clicking a push button. The figure is plotted in axes1. So I wrote axes(handles.axes1) to specify which figure I wanted to export. The code did work. However, the exported figure is in the wrong position. It is showing a random position of the GUI interface. Any help will be highly appreciated!
function export_Callback(hObject, eventdata, handles)
% hObject handle to export (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
axes(handles.axes1);
[FileName, PathName] = uiputfile('*.eps', 'Save As');
Name = fullfile(PathName, FileName);
print(Name,'-depsc');

2 件のコメント

Jan
Jan 2017 年 3 月 21 日
編集済み: Jan 2017 年 3 月 21 日
Please do not confuse the terms: "figure" means the complete window. "GUI" is a "graphical user interface", I guess you mean "GUIDE". Axes contain diagrams, plots, lines or images, but not "figures". "axes(handles.axes1)" specify the axes and implicitly the figure also, which is the parent of the axes. The exported EPS might be located on random positions on the paper, but I cannot imagine, that appears on different positions on the "GUI interface". Why do you specify the axes, when you export the complete figure?
Please explain exactly, what is appearing where. Does "random" mean, that this is not reproducible?
ChyaYan Liaw
ChyaYan Liaw 2017 年 3 月 21 日
Sorry I didn't explain very clearly. I've attached a zip file containing two images to show what I wanted to do and what I got. I wanted to export the figure plotted on axes1 (highlighted with a red box in GUI.pdf). But the exported EPS shows a different position on the GUI (please see export.eps).

サインインしてコメントする。

 採用された回答

Jan
Jan 2017 年 3 月 21 日
編集済み: Jan 2017 年 3 月 21 日

0 投票

You can create an EPS file of the figure only. In your export, the 'PaperPosition' was not set appropriately.
If you want to export a single axes only, you have to create a new figure at first and copy the axes to it:
[FileName, PathName] = uiputfile('*.eps', 'Save As');
Name = fullfile(PathName, FileName);
NewFigH = figure;
NewAxesH = copyobj(handles.axes1, NewFigH);
set(NewAxesH, 'Position', get(NewFigH, 'DefaultAxesPosition'))
drawnow;
print(Name, NewFigH, '-depsc');
close(NewFigH);

1 件のコメント

ChyaYan Liaw
ChyaYan Liaw 2017 年 3 月 31 日
This code works except that I needed to change the set function slightly to
set(NewAxesH, 'units', 'normalized', 'outerposition', [0 0 1 1]);
Thanks!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeCreating, Deleting, and Querying Graphics Objects についてさらに検索

質問済み:

2017 年 3 月 20 日

コメント済み:

2017 年 3 月 31 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by