How do you put lcolorbar in UIAxes (app designer)?

36 次查看(过去 30 天)
I have a UIAxes area in an app using app designer. I want to plot some stuff colored by category using lcolorbar (colorbar with text labels) but it won't let me. The regular colorbar can be assigned to an axes by not lcolorbar. Is there a workaround?

采纳的回答

Kevin Holly
Kevin Holly 2024-7-3,17:36
Let's say I want to place this in App Designer.
[Z,R] = readgeoraster("n39_w106_3arc_v2.dt1","OutputType","double");
[vis,visR] = viewshed(Z,R,39.6,-105.6,1000);
figure
usamap(vis,visR)
geoshow(vis,visR,"DisplayType","surface")
cmap = [0.4940 0.1840 0.5560; 0.4660 0.6740 0.1880];
colormap(cmap)
h = lcolorbar(["Obscured" "Visible"]);
h.Position(1) = h.Position(1)-0.1;
Here is a workaround:
[Z,R] = readgeoraster("n39_w106_3arc_v2.dt1","OutputType","double");
[vis,visR] = viewshed(Z,R,39.6,-105.6,1000);
fig = figure;
usamap(vis,visR)
geoshow(vis,visR,"DisplayType","surface")
cmap = [0.4940 0.1840 0.5560; 0.4660 0.6740 0.1880];
colormap(cmap)
h = lcolorbar(["Obscured" "Visible"]);
h.Position(1) = h.Position(1)-0.1;
for ii = length(fig.Children):-1:1
fig.Children(ii).Parent = app.Panel;
end
app.Panel.Children(1).Colormap = cmap;
app.Panel.Children(2).Colormap = cmap;
delete(fig)
I created the graphics on a figure (named fig) and then transfered each child of the figure to the a uipanel or uifigure. In this case, I chose app.Panel. I then had to add the correct colormaps. See app attached for working example.
  5 个评论
Eric
Eric 2024-7-4,12:48
I though of doing this, but the problem is for categorical there should be distinct colors in the colorbar instead of a color gradient. You can get colorbar to have distinct colors, but the ticks will appear between the colors which makes it ambiguous which label goes with which color. With lcolorbar the ticks are in the middle of the colors as they should be.
Eric
Eric 2024-7-4,12:56
I tried the example_lcolorbar and this seems to do what I'm looking for. It's not the ideal solution, which would be matlab putting the axes argument in the lcolorbar so it works the same as colorbar, but it works.
If I clear/reset the uiaxes, which I have to do occasionally to set new plots, is there a way of keeping the lcolorbar object and re-associating it to a new axes and data set without reverting to spawning a new figure?

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Develop Apps Using App Designer 的更多信息

产品


版本

R2024a

Community Treasure Hunt

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

Start Hunting!

Translated by