Totally crazy behaviour of figures. Axes going around through the image!
5 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Alessandro Masullo
el 26 de Ag. de 2016
Respondida: Alessandro Masullo
el 30 de Ag. de 2016
Hello,
I'm working on a GUI in matlab and I ended up with a really strange behaviour in my code. I manage to isolate the problem in a single script, which is the following:
fig = figure('Name','Spatial modes', ...
'numbertitle', 'off', ...
'ToolBar', 'none', ...
'menu','none','units','normalized',...
'outerposition',[0 0 1 1]);
title('whatever')
for i = 1:100
set(0,'CurrentFigure',fig)
cla
imagesc(rand(10))
caxis auto
hand.im_caxis.val = caxis;
colormap hot
colorbar
axis ij equal tight
set(gca,'color','none')
title(num2str(i))
drawnow
pause(0.1)
end
If you try to run it, you will see that the axes of the figure shift to the right every time the image is updated. After a dozen of shifts, they start shrinking until they are invisible and eventually they go back to the original size.
What is going on? What am I missing?
0 comentarios
Respuesta aceptada
Más respuestas (2)
the cyclist
el 26 de Ag. de 2016
I ran your code in R2016a, and did not have the "disappearing figure" you show. It worked fine.
2 comentarios
Walter Roberson
el 30 de Ag. de 2016
I tested in R2015a on OS-X and do not get a shrinking plot. The labels on the colorbar move around a bit but the sizes do not change (the change in label reflects the fact that imagesc() depends upon the range of values in the data but since your data is randomly generated, the range of values changes from random matrix to random matrix.)
Image Analyst
el 26 de Ag. de 2016
I also do not observe the effect in R2016a. The best workaround is to upgrade to the latest release. Another workaround might be to get the 'Position' property of the axes the first iteration, and then use that to set it in subsequent iterations. So if it got changed somehow, that should fix it. Try adding this code:
imagesc(rand(10))
ax = gca;
if i == 1
position = ax.Position;
else
ax.Position = position;
end
2 comentarios
Image Analyst
el 30 de Ag. de 2016
I can't test your version, but if it was a bug then it's fixed now since I don't observe it with R2016a.
Ver también
Categorías
Más información sobre Interactive Control and Callbacks 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!