Dynamic colorbar change with window size corresponding with different data area
15 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Meillo Fang
el 9 de Sept. de 2021
Comentada: Meillo Fang
el 9 de Sept. de 2021
Hey guys~
When we zoom in or zoom out the figure, I wonder how to generate a colorbar dynamically show the current area, that is, a colorbar changing with current window.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/733334/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/733339/image.png)
you see, when i zoomed in the figure, the value of the colorbar did not change to show the cunrrent elevation of the area.
Thanks a lot!
0 comentarios
Respuesta aceptada
Chunru
el 9 de Sept. de 2021
You can use the callback function of zoom to customize what you want.
z = peaks(200);
hi = imagesc(1:200, 1:200, z);
colorbar
h = zoom();
h.ActionPostCallback = @changecolorbar;
function changecolorbar(src, ~)
h = gco;
xl = xlim;
yl = ylim;
ix = find(h.XData>=xl(1) & h.XData<=xl(2));
iy = find(h.YData>=yl(1) & h.YData<=yl(2));
C = h.CData(ix,iy);
caxis([min(C(:)) max(C(:))]);
end
3 comentarios
Chunru
el 9 de Sept. de 2021
Editada: Chunru
el 9 de Sept. de 2021
For dragging, you need to have the different callback function. The code above is just for zoom callback. You can do the similar by setting the pan callback.
z = peaks(200);
hi = imagesc(1:200, 1:200, z);
colorbar
h = zoom();
hpan = pan(gcf);
h.ActionPostCallback = @changecolorbar;
hpan.ActionPostCallback = @changecolorbar;
function changecolorbar(src, ~)
h = gco;
xl = xlim;
yl = ylim;
ix = find(h.XData>=xl(1) & h.XData<=xl(2));
iy = find(h.YData>=yl(1) & h.YData<=yl(2));
C = h.CData(ix,iy);
caxis([min(C(:)) max(C(:))]);
end
Más respuestas (0)
Ver también
Categorías
Más información sobre Annotations 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!