Cannot find colorbar resize function

1 vue (au cours des 30 derniers jours)
Guillaume
Guillaume le 13 Sep 2023
Hello there. Can you access the resize function of a colorbar ? Or implement the same behavior for other graphic components ?
At least I don't get it from the properties.
  • "Units" is 'normalized'
  • There's no "OuterPosition" property
  • "Layout" is empty
  • "Parent" is the figure
  • The "Position" property changes when you change the window (or frame) size
I didn't find something relevant in related axes either.
But I like how it behaves, and I would like other axes to behave the same. Beyond keeping a relevant position and size, it is performant. I mean it doesn't heavily load CPU or GPU when resizing the window. And I'm struggling with that in general. Using Layouts or figure SizeChangedFcn is not convenient for many reasons, but not the topic here...

Réponse acceptée

Guillaume
Guillaume le 27 Sep 2023
I actually found... Colorbars are simply using listeners to position-related properties of axes. I thought axes properties like 'Position' or 'OuterPosition' couldn't be SetObervable or GetObervable, they actually are.
fig = figure;
ax = axes(fig);
cb = colorbar(ax);
cb_axlisteners = ax.AutoListeners__

Plus de réponses (1)

Rishi
Rishi le 25 Sep 2023
Hi Guillaume,
I understand you want to access the ‘resize’ function of ‘colorbar’ to change its size. There is no function called ‘resize’ for a ‘colorbar’, and instead, to change its size and location, you can use the ‘Position’ property.
It is specified as a four element vector of the form [left, bottom, width, height], where ‘left’ and ‘bottom’ specify the distance of the bottom-left corner of the ‘colorbar’ to the bottom-left corner of the figure. The ‘width’ and ‘height’ properties specify the dimensions of the ‘colorbar’.
You can find more information about ‘colorbar’ properties in the below documentation:
Hope this helps.
Regards,
Rishi Shrimal
  2 commentaires
Guillaume
Guillaume le 25 Sep 2023
Hi Rishi, and thank you for your feedback.
It's actually the other way. I don't want to change the resize behavior of a colorbar, I would like to "copy" it. I would like to create axes with similar resize behavior without using layouts.
Rishi
Rishi le 26 Sep 2023
Hi Guillaume,
I understand that you want a function that resizes ‘axes’ in a similar way like ‘Position’ resizes ‘colorbar’.
This can be done using the ‘OuterPosition’ function of axes. You can refer to the below documentation to know more about axes properties:
Regards,
Rishi Shrimal

Connectez-vous pour commenter.

Catégories

En savoir plus sur Graphics Object Programming dans Help Center et File Exchange

Produits


Version

R2023a

Community Treasure Hunt

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

Start Hunting!

Translated by