Why does Tiledlayout return error when using a figure with datetime as x-axis?
2 views (last 30 days)
Show older comments
Hello,
I am trying to use tiledlayout to display several figures. The figures use numbers (double) on the y-axis and dates (datetime) on the x-axis. When I run my code, I recieve the following error (repeated four times).
"Warning: Error updating Line.
Conversion to double from datetime is not possible."
Matlab displays the figure I opened in a seperate window; however, the tiltedlayout figure displays an empty figure
The code I am running is posted below:
open([pwd '\ClusterData\SlopeFigs\m10d30rSlp.fig']);
gh1 = gca;
figure (88)
t = tiledlayout(2,2);
nexttile
copyobj(gh1.Children,gca)
I tried an example figure from MATLAB with number on both axes and it works fine. Therefore, I believe the issue is related to datetime values not being supported in tiledlayout. Can anyone confirm?
Thanks,
Allon
0 Comments
Accepted Answer
Voss
on 5 Sep 2024
datetime x-axis is supported in tiledlayout. Here's an example:
x = datetime(2024,9,3):hours(1):datetime(2024,9,5);
y = rand(size(x));
figure
tiledlayout(2,2)
nexttile
plot(x,y)
gh1 = gca; % go ahead and store the axes handle
The problem is trying to copy objects from an axes whose XAxis is a DatetimeRuler to an axes whose XAxis is a NumericRuler (which the new axes's XAxis is by default). This is reproducing the problem:
figure
t = tiledlayout(2,2);
nexttile
copyobj(gh1.Children,gca)
A workaround is to plot something with datetime x-values in the new axes first (making that XAxis a DatetimeRuler), then copy the stuff, then delete what you plotted first. Example:
figure
t = tiledlayout(2,2);
nexttile
line_to_delete = plot(datetime(0,0,0),NaN);
copyobj(gh1.Children,gca)
delete(line_to_delete)
There may be a better solution, but this seems to work ok.
3 Comments
More Answers (0)
See Also
Categories
Find more on Graphics Object Programming in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!