Cannot find colorbar resize function

1 次查看(过去 30 天)
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...

采纳的回答

Guillaume
Guillaume 2023-9-27
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__

更多回答(1 个)

Rishi
Rishi 2023-9-25
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 个评论
Guillaume
Guillaume 2023-9-25
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 2023-9-26
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

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Graphics Object Programming 的更多信息

产品


版本

R2023a

Community Treasure Hunt

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

Start Hunting!

Translated by