Matlab UIAxes "restore view" not using set X limits.
5 views (last 30 days)
Show older comments
I have a tiled layout in my app with 2 axes with their x axes linked. I have disabled default interactivity and changed the toolbar to show only specific buttons.
app.tiledLayout = tiledlayout(app.plotPanel,2,1);
app.axes1 = nexttile(app.tiledLayout);
app.axes2 = nexttile(app.tiledLayout);
linkaxes([app.axes1 app.axes2],'x');
plot(app.axes1, time, data1)
plot(app.axes2, time, data2)
axtoolbar(app.axes1, {'zoomin','zoomout', 'restoreview'});
axtoolbar(app.axes2, {'zoomin','zoomout', 'restoreview'})
disableDefaultInteractivity(app.axes1)
disableDefaultInteractivity(app.axes2)
xlim(app.axes1, [0 60])
The plots appear as expected. However when I interact with the plots using toolbar buttons and try to reset the view using restoreview button, the x limits are being set to to the toal time range which is [0 600] rather than [0 60]. Is there anyway to make the view alway restore to [0 60]?
Thank you for the help.
0 Comments
Answers (2)
phenan08
on 22 May 2022
I am facing the same issue and I do not understand why this is happening.
Should anyone have the right tip, feel free to share it!
0 Comments
Abhas
on 24 Feb 2025
To ensure that the 'Restore View' button always resets the x-axis to the limits set instead of the full data range, you can follow this workaround:
- Create a Property in App Designer: Add a new private property in App Designer to store the default properties of the UIAxes component. Please note, you can create multiple such properties if you have more than one 'uiaxes' component.
properties (Access = private)
defaultAxesProperty; % To store required default properties of UIAxes component
end
- Modify the 'startupFcn' Callback (if required): Store the required user defined properties of ‘uiaxes’ in ‘app.defaultAxesProperty’. For example, the ‘XLim’ property of UIAxes component can be stored as following:
app.defaultAxesProperty.XLim = app.UIAxes.XLim;
- Replace the Default Axes Toolbar: Use the 'axtoolbar' function to create a custom axes toolbar, as the default toolbar cannot be modified in App Designer. The 'axtoolbar' function, can take 'app.UIAxes' component as first argument to set it as parent component and 'default' as the second argument. The function returns the toolbar object and the button objects created. The toolbar object can be ignored, and button objects can be stored in a variable 'btns'.
- Override the 'Restore View' Button Behavior: Now btns(1) contains the 'Restore View' button of the custom axes toolbar. Attach a function to its 'ButtonPushedFcn' callback to restore UIAxes properties to the stored values. This callback is called when ‘Restore View’ button is pressed.
You may refer to the attached app, 'restoreView.mlapp' for the implemented workaround.
You may refer the below documentation and MATLAB Answers link to know more about the same:
- axtoolbar: https://www.mathworks.com/help/matlab/ref/axtoolbar.html
- https://www.mathworks.com/support/search.html/answers/447786-restore-view-limits-come-from-where.html
I hope this helps!
0 Comments
See Also
Categories
Find more on Creating, Deleting, and Querying Graphics Objects in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!