正确更改我的彩条的标签?

时间:2016-07-12 12:23:44

标签: matlab colors matlab-figure

我有对数的数据。这是我绘制它的方式:

contourf(x, y, log10(my_data));colorbar;

现在,图像看起来很好 - 颜色会根据每个点的值进行缩放,因此我的图像很丰富。但是,我的颜色条旁边显示的值是错误的 - 它们错过了基础(即我有 3 而不是 10 ^ 3 )。所以我尝试使用 caxis 建议here

cmin = min(my_data(:));
cmax = max(my_data(:));
C = contourf(x, y, log10(my_data));colorbar;caxis([cmin cmax]);

它有点帮助:颜色条显示的值是正确的。但是:

  1. 我的图片现在是一种颜色,好像我绘制了my_data而不是log10(my_data)。根据{{​​3}},这是预期的效果。 如何摆脱它?
  2. 颜色条上的值显示为100,200,400,itd。 H ow我可以将其改为科学记数法吗?
  3. 修改:Souver的想法有效。但是,我原来的嘀嗒声不仅仅是 10 的强大力量。所以新的滴答如下: 10 ^ -1 10 ^ -0.5 10 ^ 0 10 ^ 0.5 < / em>, 10 ^ 1 等。但我不想要 10 ^ -0.5 10 ^ 0.5 等刻度线等等。所以我有一个新的(更短的)刻度线和我想要的标签列表:

    set(cbar, 'TickLabels', new_labels)
    

    现在我的标签看起来像这样: 10 ^ -1 10 ^ -0 10 ^ 1 10 ^ 2 10 ^ -1 10 ^ -0 10 ^ 1 10 ^ 2 等等。

    我该如何处理?

1 个答案:

答案 0 :(得分:2)

您想修改TickLabels属性,为每个刻度标记创建自定义标签。您可以检索当前的Tick位置,然后为每个位置创建一个标签。

cbar = colorbar;

% Get the current location of the tick marks
ticks = get(cbar, 'ticks');

% Now create a label for each tick mark (you can modify these however you want)
labels = arrayfun(@(x)['10^', num2str(x)], ticks, 'uniformoutput', false);

% Assign the labels to the colorbar
set(cbar, 'TickLabels', labels)

<强>更新

您也可以在运行上述代码之前自行手动指定刻度位置。

ticks = [0 10 100 1000];
set(cbar, 'ticks');