How to set a label on the xaxis

1 次查看(过去 30 天)
I am trying to set a specific xlabel on a plot using set commands.
The graph plots wind data versus time of day and it goes like this:
TODAY = datenum([2012 9 21 7 0 0]);
REST_OF_TODAY = datenum([2012 9 21 17 0 0]);
y_max1 = max([5,10]);
y_min1 = min([5,10]);
y_max2 = max([6 11]);
y_min2 = min([6 11]);
plot(TODAY,y_max1,'-- ys','LineWidth',2,'MarkerEdgeColor','r','MarkerFaceColor','g','MarkerSize',10) hold on
plot(TODAY,y_min1,'--ys','LineWidth',2,'MarkerEdgeColor','b','MarkerFaceColor','y','MarkerSize',10)
plot(REST_OF_TODAY,y_max2,'--ys','LineWidth',2,'MarkerEdgeColor','r','MarkerFaceColor','g','MarkerSize',10) plot(REST_OF_TODAY,y_min2,'--ys','LineWidth',2,'MarkerEdgeColor','b','MarkerFaceColor','y','MarkerSize',10) set(gca,'XTick',TODAY:REST_OF_TODAY)
set(gca,'XTickLabel',{'Today','Rest of today'})
datetick('x',1) title('Wind(Knots) versus Time (dd-mmmm-yyyy)','fontsize',12,'fontweight','b');
xlabel('Time (dd-mmmm-yyyy)','fontweight','b');
ylabel('Wind (Knots)','fontweight','b');
grid minor
and I want to replace the datetick format number '1' by TODAY and REST OF TODAY as shown in this code:
t0 = 1
t1 = datenum([2012 9 21 7 0 0]) % 7 am
today t2 = datenum([2012 9 21 17 0 0]) % 5 pm
x = linspace(t1,t2); % generates a row vector y of 100 points linearly spaced between and including t1 and t2.
plot(x,sin(sqrt(x-t0)*pi)) set(gca,'XTick',[t1,floor(t1)+0.5],'XTickLabel',{'Today','Rest of today'})
grid minor
Can you please help?
  2 个评论
Star Strider
Star Strider 2012-9-27
编辑:Star Strider 2012-9-27
I do not fully understand what you want to do.
To start, I suggest deleting this line:
datetick('x',1) title('Wind(Knots) versus Time (dd-mmmm-yyyy)','fontsize',12,'fontweight','b');
and replacing it with this line:
title('Wind(Knots) versus Time (dd-mmmm-yyyy)','fontsize',12,'fontweight','b')
and run your code again. Does your code now do what you want it to do?
jjlivestrong
jjlivestrong 2012-9-27
Yes. That it's exactly what I want to do, but Instead the code you are suggesting only outputs the name TODAY below the first points. I want to also display REST OF TODAY on the other points.

请先登录,再进行评论。

采纳的回答

Star Strider
Star Strider 2012-9-27
You only have two sets of points, so this is the best I can do:
TODAY = datenum([2012 9 21 7 0 0]);
REST_OF_TODAY = datenum([2012 9 21 17 0 0]);
y_max1 = max([5,10]);
y_min1 = min([5,10]);
y_max2 = max([6 11]);
y_min2 = min([6 11]);
plot(TODAY,y_max1,'-- ys','LineWidth',2,'MarkerEdgeColor','r','MarkerFaceColor','g','MarkerSize',10)
hold on
plot(TODAY,y_min1,'--ys','LineWidth',2,'MarkerEdgeColor','b','MarkerFaceColor','y','MarkerSize',10)
plot(REST_OF_TODAY,y_max2,'--ys','LineWidth',2,'MarkerEdgeColor','r','MarkerFaceColor','g','MarkerSize',10)
plot(REST_OF_TODAY,y_min2,'--ys','LineWidth',2,'MarkerEdgeColor','b','MarkerFaceColor','y','MarkerSize',10)
set(gca,'XTick',TODAY:REST_OF_TODAY)
set(gca,'XTickLabel',{'Today','Rest of today'})
title('Wind(Knots) versus Time (dd-mmmm-yyyy)','fontsize',12,'fontweight','b')
xlabel('Time (dd-mmmm-yyyy)','fontweight','b');
ylabel('Wind (Knots)','fontweight','b');
grid minor
t0 = 1
t1 = datenum([2012 9 21 7 0 0]) % 7 am today
t2 = datenum([2012 9 21 17 0 0]) % 5 pm
x = linspace(t1,t2); % generates a row vector y of 100 points linearly spaced between and including t1 and t2.
plot(x,sin(sqrt(x-t0)*pi))
% set(gca,'XTick',[t1,floor(t1)+0.5],'XTickLabel',{'Today','Rest of today'})
set(gca,'XTick',[t1 t2],'XTickLabel',{'Today','Rest of today'})
grid minor
Is that what you want? (I commented the line I replaced, and put the corrected line below it. I also included my earlier corrections to your code.)
  6 个评论
Moon Datta
Moon Datta 2012-11-15
Thank you Sir. It has helped me also..........

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Time Series Objects 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by