我在上面绘制图形和标记。但是我看到了奇怪的行为 - 标记在缩放时改变了它的位置。我创建了 video关于那个(请在观看时切换到全高清以便能够看到数字)
我的代码:
clear
fDevide = fopen('devideHistory.log');
data = textscan(fDevide, '%f:%f:%f:%f %f,%f %f,%f');
fclose(fDevide);
% hh:min:sec:millisec
secvec = [60*60 60 1 1e-3];
x = [data{1:4}] * secvec';
flvec = [1 1e-16];
y = [data{5:6}] * flvec';
xindays = x / (24*60*60);
plot(xindays, y);
set(gca, 'YTickLabel', get(gca,'YTick'))
datetick('x', 'HH:MM:SS');
hold on
fDeals = fopen('deals.log');
data = textscan(fDeals, '%f:%f:%f:%f %f,%f %f,%f %f,%f %f');
fclose(fDeals);
% hh:min:sec:millisec
secvec = [60*60 60 1 1e-3];
x = [data{1:4}] * secvec';
flvec = [1 1e-16];
y = [data{5:6}] * flvec';
xindays = x / (24*60*60);
plot(xindays, y, 'go','MarkerSize',6,'LineWidth',3);
源文件:devideHistory.log deals.log
问题是为什么标记会改变它的位置。我希望它始终处于同一位置(来自文件 deals.log)
最佳答案
因为你设置了y轴标签
set(gca, 'YTickLabel', get(gca,'YTick'))
当您现在开始缩放时,刻度本身会发生变化,但标签不会。 您通过放大注意到这一点,同时观察 y 轴的范围没有改变。
我认为您打算对上述 yticklabel 否决做的是提高这些 ytick 标签的准确性。但是您忘记了让这些标签与实际值保持同步。
这个人:http://undocumentedmatlab.com/blog/setting-axes-tick-labels-format/已花费一些时间使用回调使其成为一个自动过程。
在文件交换中,同一个人有一个脚本可以为您自动完成:http://www.mathworks.com/matlabcentral/fileexchange/36254-ticklabelformat
所以你只需要调用
ticklabelformat(gca,'y','%.6g')
或者你想要的任何其他格式
关于matlab - 为什么缩放标记会改变位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11683119/