3

その上にグラフとマーカーをプロットします。ただし、奇妙な動作が見られます。ズーム中にマーカーの位置が変わります。私はそれについてのビデオを作成しました(数字を見ることができるように見ながらfullhdに切り替えてください)

私のコード:

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.logdeals.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 に答える