我在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轴刻度,所以它不会弄乱我的颜色条?
答案 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);