【发布时间】:2016-03-03 18:04:29
【问题描述】:
我遇到的问题是,当 x 轴变大时,Matlab 2015b 在线程 No Gap Next to Axis Label in Matlab? 中使用不完整的标签零来扩展新 Xticks 的标签
xticks 不完整标签的动态扩展是不可能的,因为总是存在空间不足但只需要一个符号来标记两个值之间的一半的情况。 零点的情况是有问题的,因为我有几个校准点和几个系统,其中额外的零点容易出错。 我想有另一个符号。
示例代码如何创建不完整的 xticks 标签
labels = arrayfun(@(x)sprintf('%.2g', x), xticks, 'uniform', 0);
ax2 = axes('OuterPosition', [0.51 0.5 0.5 0.5]); % anything here
xticks = get(ax2, 'xtick'); % https://stackoverflow.com/a/35776785/54964
set(ax2, 'xticklabels', labels); % here the point!
没有那些不完整的xticks标签,而是更广泛的标签
labels = arrayfun(@(x)sprintf('%.2g', x), xticks, 'uniform', 0);
ax2 = axes('OuterPosition', [0.51 0.5 0.5 0.5]);
xticks = get(ax2, 'xtick'); % https://stackoverflow.com/a/35776785/54964
set(ax2, 'xtick', xticks, 'xticklabels', labels);
Suever 的answer 的输出
漂亮原始大小的小窗口,科学编号,因为callback();在后面的代码末尾
中等窗口
代码
hFig=figure;
data=randi(513,513);
D=mat2gray(pdist(data, 'correlation'));
ax2 = axes('OuterPosition', [0.51 0.5 0.5 0.5]);
plot(D, 'Parent', ax2);
axis(ax2, 'square');
title('Corr pdist');
cbar2 = colorbar();
set(ax2, 'XLim', [0 size(D,2)]);
set(cbar2, 'Visible', 'off')
grid minor;
labelconverter = @(x)sprintf('%.2g', x); % https://stackoverflow.com/a/35780915/54964
callback = @(varargin)set(ax2, 'xticklabels', arrayfun(labelconverter, get(ax2, 'xtick'), 'uniform', 0));
set(hFig, 'SizeChangedFcn', callback);
callback(); % necessary for small window
Matlab 中 xticks 的不完整标签怎么能有另一个符号?
【问题讨论】:
-
这里的问题是,您必须先绘制轴,然后才能获取刻度位置和标签。所以 1)绘制轴 2)drawow 3)获取 xticks 4)从 xticks 创建标签 5)设置 xticklabels。您也可以使用我在下面提供的动态答案。
标签: matlab calibration