matlab - 为什么缩放标记会改变位置?

标签 matlab plot zooming

我在上面绘制图形和标记。但是我看到了奇怪的行为 - 标记在缩放时改变了它的位置。我创建了 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/

相关文章:

matlab - 是否有内置测试字符串(或句柄)是否引用脚本?

python - 如何使用 matplotlib 以虚线获取交替颜色?

android - 缩放以适合 map 上的所有标记谷歌地图 v2

javascript - 更改 d3 SVG Canvas 的缩放级别?

html - 为什么在我添加视口(viewport)元标记时 PhoneGap 不会以不同方式呈现我的页面?

matlab - 将 GUI 中的轴保存为图像 MATLAB

python - MATLAB 的 place 函数有 python 版本吗

python - 加速 NumPy 中许多像素位置的线性插值

bash - gnuplot 直方图 : line 0: Too many columns in using specification

r - 将多个对齐的绘图放置在一页上时避免浪费空间