【发布时间】: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]);
它有点帮助:颜色栏显示的值是正确的。然而:
- 我的图像现在是一种颜色,就好像我绘制的是 my_data 而不是 log10(my_data)。根据documentation,这是预期的效果。 如何摆脱它?
- 颜色条上的值显示为 100, 200, 400, itd。 我可以将其更改为科学记数法吗?
编辑:Souver 的想法行之有效。然而,我原来的刻度不仅仅是 10 的好功能。所以新的刻度如下:10^-1、10^-0.5、10^0、10^0.5、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等
我应该如何处理?
【问题讨论】:
-
使用
labels = arrayfun(@(x)['10^{', num2str(x),'}'], ticks, 'uniformoutput', false);注意{...}添加...
标签: matlab colors matlab-figure