如何控制 Matlab 绘图中的颜色条颜色范围?
How to control colorbar color ranges in Matlab plots?
我有以下代码:
[X,Y,Z] = peaks(30);
crange = 1.5;
[maxval dummy] = max(Z(:));
[minval dummy] = min(Z(:));
% green, yellow, red
cmap = [0 1 0; 1 1 0; 1 0 0];
figure
colormap(cmap);
surf(X,Y,Z);
caxis([30 55]);
cbh=colorbar;
set(cbh,'Ytick',[30 32 38 55]);
我的目标是设置颜色条的界限,让颜色变成这样:
- 绿色从 30 到 32
- 黄色从 32 到 38
- 红色从 38 到 55
我认为我应该以某种方式更改 CData
变量,所以我使用了这些代码行但没有成功:
i = findobj(cbh,'type','image');
set(i,'cdata',[30 32 38]','YData',[30 55]);
您的自定义颜色栏包含 (32-30 = ) 2 + (38-32 = ) 6 + (55-38 = ) 17 = 25
"units" 种颜色。因此,一个简单的技巧是将每种颜色复制所需数量的 "units":
function q58097577
[X,Y,Z] = peaks(30); Z = (Z - min(Z(:)))*5;
% green, yellow, red
nG = 32-30; nY = 38-32; nR = 55-38;
cmap = [ repmat([0 1 0], [nG 1]); repmat([1 1 0], [nY,1]); repmat([1 0 0], [nR,1]) ];
figure()
colormap(cmap);
surf(X,Y,Z);
caxis([30 55]);
cbh=colorbar;
set(cbh,'Ytick',[30 32 38 55]);
导致:
我有以下代码:
[X,Y,Z] = peaks(30);
crange = 1.5;
[maxval dummy] = max(Z(:));
[minval dummy] = min(Z(:));
% green, yellow, red
cmap = [0 1 0; 1 1 0; 1 0 0];
figure
colormap(cmap);
surf(X,Y,Z);
caxis([30 55]);
cbh=colorbar;
set(cbh,'Ytick',[30 32 38 55]);
我的目标是设置颜色条的界限,让颜色变成这样:
- 绿色从 30 到 32
- 黄色从 32 到 38
- 红色从 38 到 55
我认为我应该以某种方式更改 CData
变量,所以我使用了这些代码行但没有成功:
i = findobj(cbh,'type','image');
set(i,'cdata',[30 32 38]','YData',[30 55]);
您的自定义颜色栏包含 (32-30 = ) 2 + (38-32 = ) 6 + (55-38 = ) 17 = 25
"units" 种颜色。因此,一个简单的技巧是将每种颜色复制所需数量的 "units":
function q58097577
[X,Y,Z] = peaks(30); Z = (Z - min(Z(:)))*5;
% green, yellow, red
nG = 32-30; nY = 38-32; nR = 55-38;
cmap = [ repmat([0 1 0], [nG 1]); repmat([1 1 0], [nY,1]); repmat([1 0 0], [nR,1]) ];
figure()
colormap(cmap);
surf(X,Y,Z);
caxis([30 55]);
cbh=colorbar;
set(cbh,'Ytick',[30 32 38 55]);
导致: