How do you set the scale on a color bar from the figure window?

38 Ansichten (letzte 30 Tage)
JG
JG am 19 Jan. 2022
Kommentiert: Voss am 24 Jan. 2022
I use imagesc to create a plot of x,y,z data. That generats a figure window. I add the color bar to the figure window and then zoom in on the area of interest. I want to change the range of the color bar to give me better detail in the region of interest. How do I do this from the tools given on the figure window? I don't want to have to write a scrpit to generate such a simple plot.
  1 Kommentar
Rik
Rik am 20 Jan. 2022
You would have to zoom in on the colorbar as well.
What you describe is actually fairly complex. It can be done in a function, but it may require adapting the colorbar so thoroughly that it would be easier to use a second axes object explicitly.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

JG
JG am 24 Jan. 2022
Soooo
Looking at the responses (thank you), it appears that I what I want to do cannot be done. I wanted to avoid writing a script for such a simple operation. The ability to zoom in the view, and then zoom in scale isn't an unreasonable operation. Scripts are great if you have a process that repeats, but are a burdend if all you want to do is take a quick look at a one off plot.
  2 Kommentare
Rik
Rik am 24 Jan. 2022
Zooming in is a simple operation, as is adjusting the color axes (simply call caxis). You want to combine the two, but not just that, you also want the adjustment to take account of the specific region you selected.
Why do you insist that it is simple?
(XKCD 1425, copyright Randall Monroe, CC 2.5 BY-NC)
Voss
Voss am 24 Jan. 2022
By the way, @JG, you have avoided writing a script to do it, because we've written it for you; you merely have to copy and paste; what's simpler than that?

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Voss
Voss am 20 Jan. 2022
i don't know how to do it from the figure editor tools, but you can do it with a few lines of code, below. To demonstrate, I'll create a few figures with images and colorbars here, just to show the process (they have to be separate so you can see the various steps - in reality this would all be within your one figure):
figure(); imagesc(); colorbar();
Now zoom in:
figure(); imagesc(); colorbar();
set(gca(),'XLim',[20 40],'YLim',[30 50]);
One more identical figure, zoomed-in, preparing to adjust the colorbar limits:
figure(); imagesc(); colorbar();
set(gca(),'XLim',[20 40],'YLim',[30 50]);
Then these lines do the colorbar limits adjustment:
im = findobj(gca(),'Type','image');
cdata = get(im,'CData');
xl = get(gca(),'XLim');
yl = get(gca(),'YLim');
xl = max(1,min(size(cdata,2),[floor(xl(1)) ceil(xl(2))]));
yl = max(1,min(size(cdata,1),[floor(yl(1)) ceil(yl(2))]));
cdata = cdata(yl(1):yl(2),xl(1):xl(2),:);
set(gca,'CLim',[min(cdata(:)) max(cdata(:))]);
  1 Kommentar
Voss
Voss am 24 Jan. 2022
@JG: You can make this code into a function (attached), and set it up so the function is called automatically when you zoom/pan:
figure(); imagesc(); colorbar();
set(zoom,'ActionPostCallback',@adjust_color_limits);
set(pan,'ActionPostCallback',@adjust_color_limits);

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Data Distribution Plots finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by