3

我在上面绘制图形和标记。但是我看到了奇怪的行为 - 标记在缩放时改变了它的位置。我已经制作了关于这个的视频(请在观看时切换到全高清以便能够看到数字)

我的代码:

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 deal.log

问题是为什么标记会改变它的位置。我希望它总是在同一个位置(来自文件 Deals.log)

4

1 回答 1

3

这是因为您设置了 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')

或您想要的任何其他格式

于 2012-07-27T08:24:25.013 回答