plot two time series datasets from different years on the same plot ignoring the year
정보
이 질문은 마감되었습니다. 편집하거나 답변을 올리려면 질문을 다시 여십시오.
이전 댓글 표시
I want to plot two time series datasets from 2019 and 2020 on the same plot to compare them but I want to ignore the year so they are on top of each other. for this I changed the years to 2000 and plot it both but then the xaxis label is 2000. Also this works ok if no leap years but not a good idea if one of the years is a leap year. I also tried converting the datetime to 'day of year' but then the xaxis is a number and I want to show dates.
is there a way to do this without changing the year?

댓글 수: 1
Ihab Abboud
2020년 10월 30일
답변 (1개)
Ameer Hamza
2020년 10월 30일
편집: Ameer Hamza
2020년 10월 30일
Refer to the answer here: https://www.mathworks.com/matlabcentral/answers/440517-how-to-remove-period-stamp-in-datetime-plot
You can run the following lines after creating the figure
ax = gca;
ax.XTickLabelMode = 'manual';
ax.XTickLabel = datestr(ax.XTick,'mmmm dd');
댓글 수: 5
Ihab Abboud
2020년 10월 30일
Ameer Hamza
2020년 10월 30일
Yes, but that is a general problem, irrespective of the method used to plot. How do you want to compare two years when one of them is a leap year?
Ihab Abboud
2020년 10월 30일
Ihab Abboud
2020년 10월 30일
Ameer Hamza
2020년 10월 31일
You can do something like this so that you don't need to change the year number
t1 = datetime(2019,1,1):datetime(2019,12,31);
y1 = rand(size(t1));
t2 = datetime(2020,1,1):datetime(2020,12,31);
y2 = rand(size(t2));
ax1 = axes();
hold(ax1);
plot(t1, y1);
ax1.XTickLabelMode = 'manual';
ax1.XTickLabel = datestr(ax1.XTick,'mmm dd');
ax2 = axes('Position', ax1.Position, 'Visible', 'off');
hold(ax2);
plot(t2, y2, 'r')
However, note that in this case, the difference will be offset by 1 day. A reasonable approach seems to remove the extra day.
이 질문은 마감되었습니다.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!