Specific values in colorbar
24 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Arthur Brigatto
am 11 Jan. 2016
Kommentiert: AASHNA SUNEJA
am 29 Okt. 2020
I am trying to plot a heatmap as the following:
data = [2 1 0 0 0 0 0 0 0 0;1 2 15 0 0 0 0 0 0 0];
colormap('hot');
imagesc(data);
colorbar;
But I want a colorbar with only the values in my data. I don't really need the "transitioning" ones. Is there a way to do so?
Thanks!
0 Kommentare
Akzeptierte Antwort
Kelly Kearney
am 16 Jan. 2016
The unique values in you original question are [0 1 2 15]. Do you want just those to appear in the colorbar, or all possible integers between 0 and 15?
For the former:
data = [2 1 0 0 0 0 0 0 0 0;1 2 15 0 0 0 0 0 0 0];
[unq, ~, iunq] = unique(data);
iunq = reshape(iunq, size(data));
ncol = length(unq);
cmap = hot(ncol*2);
cmap = cmap(1:2:end,:);
imagesc(iunq);
colormap(cmap);
cb = colorbar;
set(gca, 'clim', [0.5 ncol+0.5]);
set(cb, 'ticks', 1:ncol, 'ticklabels', cellstr(num2str(unq)));
Walter's code covers the latter case. As a side note, I'd usually just suggest hot(4) to get the 4-color hot colormap, but interpolating hot to only 4 colors results in two nearly-identical shades of yellow; hence the doubling of colors and then using every other in my cmap generation above.
5 Kommentare
Kelly Kearney
am 19 Jan. 2016
The 'ticks', 'ticklabel' combo is necessary for HG2 (R2014b+). For earlier versions, substitute '[x/y]tick', '[x/y]ticklabel' as appropriate depending on colorbar orientation.
AASHNA SUNEJA
am 29 Okt. 2020
Hi
I want my data [4.64 5.99 4.97 5.71 5.34 8.1 8.01 6.12 5.58 8.11 7.94 7.16 7.25 7.5 7.59] to be plotted in 15 equal regions of a circle. Each value to be represented by different color. How I can I do this? The code given above plots the values in a stairght line. For reference I am attaching a plot. A similar profile I want from my experiemntal values. Can anyone help me with this.
Weitere Antworten (1)
Walter Roberson
am 11 Jan. 2016
data_range = ceil(max(data(:))) - floor(min(data(:))) + 1;
imagesc(data);
colormap(hot(data_range));
colorbar();
2 Kommentare
Walter Roberson
am 15 Jan. 2016
For MATLAB R2014a and earlier, colorbar() creates a new axes, which you can record the handle of and set() the YTick parameter of.
You would probably want to be setting the ticks at unique(data(:))
Siehe auch
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!