Plot Matix

3 次查看(过去 30 天)
Trader
Trader 2012-3-23
I'm trying to plot a 539x13 matrix with the first column = dates which are in cell format. Everything else in the array is a double value.
How can I plot columns 2 to 13 using the date values as my tick values?
when I try setting:
set(gca,'XTickLabel',p_day)
I get the error:
Error using ==> set Cell array of strings may only contain string and numeric matrices
Your help is greatly appreciated!

采纳的回答

Trader
Trader 2012-3-26
In case someone has the same problem, you must convert the date using datum()
here is the code I used:
date = datenum(date, 'yyyy-mm-dd'), 'mmddyyyy'; plot(date, p_open) set(gca,'XTickLabel',date) datetick('x','mm-dd-yyyy','keepticks')
Thanks Jan for the suggestion. I'm not sure why but the labels are broken into about 2 month periods (there are 3 points where it is a 1 month period)

更多回答(2 个)

Rick Rosson
Rick Rosson 2012-3-23
Please post your code.
  1 个评论
Trader
Trader 2012-3-23
file_name = 'spy_01012010_now.csv';
file_dir = 'Historical_data/';
full_path = [file_dir,file_name];
file_out = [file_dir,'output_',file_name];
import1 = importdata(full_path);
% the first column (starting from the second row) is the trading days in format mm/dd/yyyy.
date = import1.textdata(2:end,1);
% Create OHLC matricies
price_open=import1.data(:,1);
price_high=import1.data(:,2);
price_low=import1.data(:,3);
price_close=import1.data(:,4);
for loop using import data to fill a matrix called xls_full_data that is 539x13 but for example sake the matrix is filled like this:
xls_order_data(x,:) = {current_date open high low close};
where x is an int used for a counter, current_date = current_date = char(date(i)); and open = price_open(x); high = price_high(x); etc...
then i try to plot using:
p_day = cell2mat(xls_full_data(1:end,1));
p_open = cell2mat(xls_full_data(1:end,2));
p_high =cell2mat(xls_full_data(1:end,3));
p_low = cell2mat(xls_full_data(1:end,4));
p_close = cell2mat(xls_full_data(1:end,5));
this doesn't work:
plot(p_day,p_open)
set(gca,'XTickLabel',p_day)
Like I said before, I'd like to use the date values for the tick then plot open, high, low and close.
Thanks for your help!

请先登录,再进行评论。


Jan
Jan 2012-3-23
Perhaps:
set(gca, 'XTickLabel', p_day(:, 1))
But this is guessing only. Please post the code and a small example of the values. I do not think, that 539 labels will look nice.

类别

Help CenterFile Exchange 中查找有关 2-D and 3-D Plots 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by