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

5 visualizzazioni (ultimi 30 giorni)
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?

Risposta accettata

Kevin Holly
Kevin Holly il 3 Lug 2024
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 Commenti
Eric
Eric il 4 Lug 2024
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 il 4 Lug 2024
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?

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Geographic Plots in Help Center e File Exchange

Prodotti


Release

R2024a

Community Treasure Hunt

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

Start Hunting!

Translated by