【问题标题】:Correctly change the labels of my colorbar?正确更改我的颜色条的标签?
【发布时间】:2016-07-12 12:23:44
【问题描述】:

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

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

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

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)。根据documentation,这是预期的效果。 如何摆脱它
  2. 颜色条上的值显示为 100, 200, 400, itd。 我可以将其更改为科学记数法吗?

编辑:Souver 的想法行之有效。然而,我原来的刻度不仅仅是 10 的好功能。所以新的刻度如下:10^-110^-0.510^010^0.5、10^1 等。但我不想要 10^-0.510^0.5 等刻度. 所以我有一个新的(更短的)刻度列表和我想要的标签:

set(cbar, 'TickLabels', new_labels)

现在我的标签看起来像这样:10^-110^-010^110^ 2, 10^-1, 10^-0, 10^1, 10^2

我应该如何处理?

【问题讨论】:

  • 使用labels = arrayfun(@(x)['10^{', num2str(x),'}'], ticks, 'uniformoutput', false); 注意{...} 添加...

标签: matlab colors matlab-figure


【解决方案1】:

您想修改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');

【讨论】:

  • 谢谢。但是当我想要比我原来的情节更少的滴答声时我应该怎么做?我使用了您答案中的代码并得到了诸如 10^1.5 之类的刻度。这并不奇怪,因为我最初的刻度并不是严格的 10 幂。我尝试过滤掉我不想要的蜱虫。但是 matlab 尝试为每个刻度分配一个标签。所以现在蜱虫重复它们自己。我该怎么处理?
  • 可以通过set(cbar, 'Ticks', yourticks, 'TickLabels', yourlabels实现手动标注。 yourticks 必须是包含刻度的向量,而 yourlabels 必须是包含相应字符串的元胞数组。另外你可以看看matlab documentation
猜你喜欢
  • 1970-01-01
  • 2021-02-08
  • 1970-01-01
  • 1970-01-01
  • 2022-06-10
  • 1970-01-01
  • 2011-01-30
  • 2013-08-03
  • 1970-01-01
相关资源
最近更新 更多