MATLAB - 重新定义YTickLabel

时间:2010-02-27 21:26:44

标签: matlab

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

cy = get(ch,'YTickLabel');  
set(ch,'YTickLabel',[]);  
set(ch,'YTickLabel',strcat(cy,{' dB'})); 

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

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

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

2 个答案:

答案 0 :(得分:5)

为了在调整图形大小时保持y轴刻度值不被更改,您必须明确设置'YTick' property或将'YTickMode' property设置为'manual'(防止它自动更改)。您可能还必须明确设置'YLim' property(或将'YLimMode' property设置为'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

您还可以在初始调用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

调整数字时,这些限制,刻度值和刻度标签也应保持不变。

答案 1 :(得分:0)

您还必须手动设置YTick属性,因此它不会随图调整大小而改变。

cytick = get(ch,'YTick');    
set(ch,'YTick',cytick);