How to automatically get the axis of a figure in Live Editor?
21 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Grelier Matthieu
el 2 de Mayo de 2022
Comentada: Grelier Matthieu
el 3 de Mayo de 2022
I'm working with images on a live script and it would be much faster for me if it was possible to get the figure axis. However I don't even manage to get the figure handles so I don't know if a solution exists?
Thank you
2 comentarios
Riccardo Scorretti
el 2 de Mayo de 2022
Normally, if you create new figures by:
hndl = figure();
you should get the handle to the figure. Can you provide a simple example of what you need to do?
Respuesta aceptada
Cris LaPierre
el 2 de Mayo de 2022
Editada: Cris LaPierre
el 2 de Mayo de 2022
You can get the axes object in a figure the same way you would outside of a live script.
Option 1: capture the axes object by creating it with code. Be sure to specify the target axes when plotting, or the plot command will create a new figure and axes.
ax = axes;
plot(ax,x,y)
Option 2: plot your data as you normally would. Once created, capture the current axes using the gca command.
plot(x,y)
ax = gca;
This works for most plot types, but some plots may behave differently. If neither approach works for you, please share your code.
3 comentarios
Cris LaPierre
el 2 de Mayo de 2022
I see. Where are you calling the get function? In the live editor or in the command window?
I think what is happening here is that the image you see in the livescript is a snapshot of the figure at a specific time, and not the actual figure. So while you can zoom in and otherwise interact with the snapshot, it is not the axes captured in ax.
I'm afraid I don't know a way to do exactly what you want using the image embedded in a live script. Ideas that immediately come to mind are to either
1. use the Update Code option to add code to your script to update the actual figure axes to those you established via manually zooming. This appears automatically
2. pop the figure out of the live script so that it behaves as you are expecting. You can do that programmatically with the following code. Now when you interact with the figure window that opens, you are modifying the axes captured in ax.
figure('Visible','on')
Más respuestas (1)
Steven Lord
el 2 de Mayo de 2022
If you call the function that displays the image with an output argument, you can determine which figure contains that graphics object using the ancestor function.
h = plot(1:10);
f = ancestor(h, 'figure')
f.Color = 'r';
The ancestor function lets you ask for other ancestors as well:
ax = ancestor(h, 'axes')
isequal(f, ancestor(ax, 'figure')) % true
Ver también
Categorías
Más información sobre Visual Exploration en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!