Matlab 是否正确更改颜色栏的标签?
我有对数的数据。我是这样画的:Matlab 是否正确更改颜色栏的标签?,matlab,colors,matlab-figure,Matlab,Colors,Matlab Figure,我有对数的数据。我是这样画的: contourf(x, y, log10(my_data));colorbar; 现在,图像看起来很好-颜色根据每个点的值进行缩放,因此我的图像是彩色的。但是,我的颜色栏旁边显示的值是错误的-它们缺少基本值(即我有3而不是10^3)。因此,我尝试按照建议使用caxis: 这有点帮助:颜色栏显示的值是正确的。然而: 我的图像现在是一种颜色,好像我打印了我的_数据而不是log10(我的_数据)。根据该报告,这是一种预期效果我如何摆脱它 颜色栏上的值显示为100200
contourf(x, y, log10(my_data));colorbar;
现在,图像看起来很好-颜色根据每个点的值进行缩放,因此我的图像是彩色的。但是,我的颜色栏旁边显示的值是错误的-它们缺少基本值(即我有3而不是10^3)。因此,我尝试按照建议使用caxis:
这有点帮助:颜色栏显示的值是正确的。然而:
set(cbar, 'TickLabels', new_labels)
现在我的标签是这样的:10^-1,10^-0,10^1,10^2,10^-1,10^-0,10^1,10^2,等等
我应该如何处理这个问题?您想修改属性,为每个记号创建一个自定义标签。可以检索当前位置,然后为每个位置创建标签
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');
您希望修改该特性,以便为每个记号创建自定义标签。可以检索当前位置,然后为每个位置创建标签
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,'ticklebels',yourtlabels
yourticks
必须是包含刻度的向量,而yourtlabels
必须是包含相应字符串的单元格数组。此外,您可以查看感谢。但是,如果我希望刻度小于原始绘图中的刻度,我该怎么办?我使用了代码从你的答案中,我得到了10^1.5这样的刻度。这并不奇怪,因为我原来的刻度严格来说不是10的幂。我尝试过滤掉我不想要的刻度。但是matlab尝试为每个刻度指定一个标签。所以现在刻度会重复自身。我应该如何处理它?你可以通过设置来实现手动标签(cbar,'Ticks',yourticks,'ticklebels',yourtlabels
yourticks
必须是包含Ticks的向量,而yourtlabels
必须是包含相应字符串的单元格数组。此外,您可以查看一下用法labels=arrayfun(@(x)['10^{',num2str x','}',Ticks',uniformoutput',false)
注意添加的{…}
注意添加的标签=arrayfun(@(x)['10^{',num2str(x),'}',勾选'uniformoutput',false);
注意添加的{…}
注意。。。