MATLAB - 重新定义YTickLabel

Sor*_*n M 5 matlab

我在MATLAB中编辑colorbar时遇到问题.绘制颜色条,我想在YTickLabels上添加特定测量的单位(dB).这是通过以下命令完成的:

cy = get(ch,'YTickLabel');  
set(ch,'YTickLabel',[]);  
set(ch,'YTickLabel',strcat(cy,{' dB'})); 
Run Code Online (Sandbox Code Playgroud)

但是当我调整图形大小时,MATLAB重新定义间隔,输出重复两次,如:

10 dB,20 dB,30 dB,10 dB,20 dB,30 dB而不是10 dB,20 dB,30 dB.

如何防止MATLAB重新定义其Y轴刻度,因此它不会弄乱我的颜色条?

gno*_*ice 5

为了在调整图形大小时保持y轴刻度值不被更改,您必须显式设置'YTick'属性或将'YTickMode'属性设置为'manual'(以防止自动更改).您可能还必须明确设置'YLim'属性(或将'YLimMode'属性设置为'manual')以保持颜色条的限制不会更改.这是一个可能的解决方案:

labels = get(ch,'YTickLabel');    %# Get the current labels
set(ch,'YLimMode','manual',...    %# Freeze the current limits
       'YTickMode','manual',...   %# Freeze the current tick values
       'YTickLabel',strcat(labels,{' dB'}));  %# Change the labels
Run Code Online (Sandbox Code Playgroud)

您还可以在初始调用COLORBAR函数时创建颜色条时定义刻度属性.例如,如果您知道要在10,20和30处添加3个刻度值并在标签上添加"dB",则可以按以下方式创建颜色栏:

ch = colorbar('YLim',[10 30],...                        &# The axis limits
              'YTick',[10 20 30],...                    %# The tick locations
              'YTickLabel',{'10 dB','20 dB','30 dB'});  %# The tick labels
Run Code Online (Sandbox Code Playgroud)

调整图形大小时,这些限制,刻度值和刻度标签也应保持不变.