それが私が2つのグラフィックを描く方法です(私がそれをするのを手伝ってくれた人たちに感謝します):
clear
logsFolder = 'C:\logs\';
stocks = {'log'};
for stock = stocks
filename = [logsFolder stock{1} '.log'];
fLog = fopen(filename);
data = textscan(fLog, '%f:%f:%f:%f %f %f %f');
fclose(fLog);
% hh:min:sec:millisec
secvec = [60*60 60 1 1e-3];
x = [data{1:4}] * secvec';
y = data{5};
yPrice = data{6};
xindays = x / (24*60*60);
figure;
[AX,H1,H2] = plotyy(xindays,y,xindays,yPrice);
set(AX(1),'xtick',[]);
lo1 = min(y);
hi1 = max(y);
lo2 = min(yPrice);
hi2 = max(yPrice);
if (hi2/lo2 > hi1/lo1)
ylim(AX(1),[lo1 hi2/lo2 * lo1]);
ylim(AX(2),[lo2 hi2]);
else
ylim(AX(1),[lo1 hi1]);
ylim(AX(2),[lo2 hi1/lo1 * lo2]);
end
ticklabelformat(AX(2),'y','%g')
ticklabelformat(AX(2),'x',{@tick2datestr,'x','HH:MM:SS'})
title(stock);
% iNeedToDrawThat = data{7}
end
入力ファイルの例はこちらから入手できます。ご覧のとおり、ファイルには表示したい最後の列が含まれています。範囲は 0 (図の下部) から最大値 (グラフの上部) までです。だから、どうにかして3つのグラフィックを描く必要があります。すでに 2 つの軸があり、3 番目のグラフを追加する場所がないため、3 番目のグラフのラベル付きの軸を省略しても問題ありません。ただし、可能であれば、2 つの軸を「重ねる」ことは問題ありません。
どうすればいいのかわからないので、あなたの助けを求めています。
私はそれを試しましたが、うまくいきません:
figure;
[AX,H1,H2] = plotyy(xindays,y,xindays,yPrice);
hold on;
volume = data{7};
plot(xindays, volume);
hold off;