我仍然無法在matlab中創建可用的東西。從文本文件中創建圖表,其中軸X是具有毫秒精度的日期,Y是具有標記的值
這個任務很簡單。我有兩個文件:devideHistory.logdeals.log在這兩個文件中只考慮前兩列。所以第一個文件包含應該形成圖形的X和Y.第二個文件包含應顯示在圖形上的標記的X和Y.有了這個社會這樣的程序的幫助下創建
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);
% i need to set enough precision on Y but this doesn't work because
% while zooming labels doesn't update
set(gca, 'YTickLabel', get(gca,'YTick'))
% i want to have "time" on X but this doesn't work because
% while zooming new labels doesn't appear
datetick('x', 'HH:MM:SS');
結果:
但我有兩個問題與縮放功能:
- ,同時從X在標籤縮放消失,因此在X處沒有標籤how to always display "labels" on axis X
- 而縮放Y上的標籤不會更新,因爲結果標記顯示在錯誤的位置why while zooming marker changes position?
那麼我的任務是非常簡單和直接。 matlab中有簡單而直接的解決方案嗎?上面的代碼已經包含了幾個「黑客」,但仍然無法按預期工作。我害怕挫敗黑客沒有意義。有人會提出另一種方法嗎?可能matlab只是不適合我的需求?
您的標記顯示正確,標籤錯誤,直接得到您的事實!您對自定義標籤有更新問題;修復與回調或甚至更簡單與[ticklabelformat](http://www.mathworks.com/matlabcentral/fileexchange/36254-ticklabelformat)這一切都爲你 – 2012-07-27 12:53:44